ASP.NET MVC 5-如何保持用户登录

本文关键字:何保持 用户 登录 NET MVC ASP | 更新日期: 2023-09-27 18:22:08

我正在创建一个人们可以注册和登录的网站。我使用的是带有实体框架的SQL Server数据库。

这是我在中登录的操作

[HttpPost]
public ActionResult LoggingIn(User user)
{
    ModelState.Clear();
    var result = MainLogic.LogIn(user);
    if (result.MessegeID == 0)
    {
        RedirectToAction("Index");
    }
    else
        ViewBag.LoginInfo = result.Msg;
    return View("Index");
}

现在我希望登录的用户能够登录x次。我一直在尝试使用TempData[LogedAs]=user,每次用户切换视图时,我都会使用TempDataKeep(),直到用户注销。

我认为这不是一个好的做法,否则我怎么能留住用户?

ASP.NET MVC 5-如何保持用户登录

登录成功时需要设置会话变量。然后检查会话变量是否已设置,如果未设置,则将其发送到登录页面。这可能会对你有所帮助https://codereview.stackexchange.com/questions/51331/simple-authentication-in-asp-net-mvc-5

这是一个非常基本的想法,希望这对你来说有意义。

我认为使用自己的身份验证系统不是一个好主意,因为你对此人员没有太多知识,我建议使用Identity来管理用户身份验证,在持久化用户登录时需要考虑两点:

  1. 设置Cookie的过期时间

Startup类的ConfigureAuth方法中,设置cookie的过期时间:

 public void ConfigureAuth(IAppBuilder app)
    {
     app.UseCookieAuthentication(new CookieAuthenticationOptions
         {
             AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
             LoginPath = new PathString("/Account/Login"),
             ExpireTimeSpan = new System.TimeSpan(90, 0, 0, 0),
             CookieHttpOnly = false,
             SlidingExpiration = true,
          });
     }
  1. 在IIS中设置计算机密钥,详细信息请点击此处

使用会话和cookie。据我所知,如果你没有明确提及,会话超时是20分钟。Cookie的超时时间可能比会话更长。因此,我的最佳选择是在您的应用程序中使用cookie,并注意安全和最佳实践。

您还可以使用cookie来管理日志记录。创建cookie

HttpCookie cookie = new HttpCookie("Cookie");

初始化其值,您可以存储用户ID或已登录用户的任何唯一数据。

cookie.Value = "user data";
cookie.Expires = DateTime.Now.AddSeconds(10);//You can set expire in seconds, hours or days etc. as per your choice. Cookie will get expire as per the time you have set.

设置为响应以添加cookie。

 this.ControllerContext.HttpContext.Response.Cookies.Add(cookie);

访问cookie检查cookie是否存在

if (Request.Cookies["Cookie"] != null) { 

}else{
string temp = Request.Cookies["Cookie"].Value; // access the value of cookie
}