public ActionResult Login(VMLogin vm)
        {
            if (ModelState.IsValid)
            {
                //Busca o usuário no banco com o mesmo email que foi informado na tela
                User usuarioDb = db.Users.Where(u => u.Email == vm.Email).FirstOrDefault();

                if(usuarioDb == null)
                {
                    ModelState.AddModelError("", "Usuário ou senha incorretos");
                    return View(vm);
                }

                //Compara a senha que foi informada na tela com a senha criptografada armazenada
                //no banco
                bool senhaConfere = Crypto.VerifyHashedPassword(usuarioDb.Password, vm.Password);

                if (!senhaConfere)
                {
                    ModelState.AddModelError("", "Usuário ou senha incorretos");
                    return View(vm);
                }

                //Gera um token de autenticação único.
                //O método Guid.NewGuid() gera uma string aleatória que nunca se repete
                //Ex: f61dbbae2-2e29-4c6c-a445-aetdop12
                string authId = Guid.NewGuid().ToString();
                //Session["AuthToken"] = authId;

                //Cria um novo cookie com a identificacao AuthID
                var cookie = new HttpCookie("AuthToken");

                //Programa o cookie para expirar após uma semana, assim o usuário não precisa ficar
                //logando toda hora, mesmo se fechar o browser e voltar.
                cookie.Expires = DateTime.Now.AddDays(7);

                //Seta o valor do cookie com o token de identificação
                cookie.Value = authId;

                //Faz o cookie ser enviado para o browser do usuário junto com a resposta da página
                Response.Cookies.Add(cookie);

                //Atualizar o usuário do banco com o token de autenticação
                usuarioDb.AuthToken = authId;
                db.SaveChanges();

                if (!String.IsNullOrEmpty(vm.RedirectTo))
                {
                    return Redirect(vm.RedirectTo);
                }

                return RedirectToAction("Index", "Home", new { area = "Admin" });

            }
            return View(vm);
        }
 public ActionResult Login()
 {
     VMLogin vm = new VMLogin();
     vm.RedirectTo = Request.Params["redirectTo"];
     return View(vm);
 }