Как будет выглядеть этот код аутентификации при входе в систему ASP. NET CORE MVC? - PullRequest
0 голосов
/ 06 февраля 2020

Мне нужна помощь с этим фрагментом кода, он находится в ASP. NET MVC, я хотел бы передать его на ASP. NET CORE MVC, однако некоторые вещи я не найти аналог в ASP. NET core.

public ActionResult Login()
{
    VMLogin vm = new VMLogin();
    return View(vm);
}

[HttpPost]
public ActionResult Login(VMLogin vm)
{
    if (ModelState.IsValid)
    {
        Usuario usuarioDb = db.Usuarios.Where(u => u.Login == vm.Login).FirstOrDefault();

        if (usuarioDb == null)
        {
            ModelState.AddModelError("", "Não existe usuário com este Login");
            return View(vm);
        }

        bool senhaConfere = Crypto.VerifyHashedPassword(usuarioDb.Senha, vm.Senha);

        if (!senhaConfere)
        {
            ModelState.AddModelError("", "Senha incorreta");
            return View(vm);
        }

        string authId = Guid.NewGuid().ToString();
        Session["AuthID"] = authId;

        var cookie = new HttpCookie("AuthID");
        cookie.Expires = DateTime.Now.AddDays(7);
        cookie.Value = authId;
        Response.Cookies.Add(cookie);

        usuarioDb.AuthId = authId;
        db.SaveChanges();

        return RedirectToAction("Index", "Home");
    }
    return View(vm);
}

public ActionResult Logout()
{
    if (Request.Cookies.AllKeys.Contains("AuthID"))
    {
        String authId = Request.Cookies["AuthID"].Value;
        Usuario usuarioDb = db.Usuarios.Where(c => c.AuthId == authId).FirstOrDefault();
        if (usuarioDb != null)
        {
            usuarioDb.AuthId = "";
            db.SaveChanges();
        }
        Request.Cookies.Remove("AuthID");

        if (Session["AuthID"] != null)
        {
            Session.Remove("AuthID");
        }
    }
    return RedirectToAction("Index", "Home");
}
...