保持用户登录ASP.. NET 5网站

本文关键字:NET 网站 ASP 登录 用户 | 更新日期: 2023-09-27 18:16:16

我希望选择"记住我"选项的用户长时间登录我的网站(例如3个月,或者直到他们清除cookie)。现在我必须每隔20分钟左右再登录一次。

我正在使用ASP。. NET 5/vnext/mvc 6 (beta 7).我的网站是基于代码visual studio使作为模板项目。我知道其他问题也问了类似的问题,但我不知道它如何适用于新的ASP.NET。

我有这个代码在我的启动。ConfigureServices方法,但它似乎没有效果:

    services.ConfigureIdentityApplicationCookie(options =>
    {              
        options.ExpireTimeSpan = TimeSpan.FromDays(90);
        options.SlidingExpiration = true;
        options.AutomaticAuthentication = true;
        options.LoginPath = new PathString("/Account/Login");
        options.LogoutPath = new PathString("/Account/LogOff");
    });

感谢

编辑

使用fiddler,来自登录的响应包含以下cookie数据:

响应发送642字节Cookie数据:Set-Cookie:.AspNet.Microsoft.AspNet.Identity.Application = CfDJ8P8cKnxL87ZMjh0duvm7eKbBbA_vf1ECr95KgPd4MNsKBj0_SljMLWLPNzNFIr4PQTG1ZjVyQ7cfFMEehcI5JZrOlVVHfZ_SD29jN1vdhsdUMPTysvhvo6RlnDHq5YwFdnTNqw -_ia4cGWk8Iw05PJHsQ0mws_e0DzWpX088kysJuU0LcNoyPA22nyMoGrK1RP1Bax_XwixdO6jLQx164lqRqVYi6ys3VVPJP0aLOg3w4CovxcAemgMQEhAcNUdP6Q0rnBmfBn7FZR_kNEgXoiMkNNgBDwUuVyiweU3fw5rzE-mmBPo2IYBJWRoaSzNLcUV5gSTpDT2n8IMh4nPlTzGrFIUgCpHDhpmXJJ3EneC5i-eVaLGeQG1FAIBZZ-oNlolwdkXi63bXpHuRME9cnYLTm3cDpfooXKq0_Rn7ls4lN-wCF5kGvz6ALruUaPWNERvcKlccix7o3B_-rj1q5yhn1bKO2vumArRaq-QpHb2djaN84IdFBOw1CSJLpeQKeP3qrdJD8-GYl6chvbJ4FbA;expires=星期一,2016年1月4日10:40:35 GMT;路径=/;httponly

你可以看到在最后的过期时间是90天,这是正确的,但它仍然会在20分钟左右登录我。

保持用户登录ASP.. NET 5网站

可能您有密钥存储问题?检查您的日志,确保cookie加密密钥保存正确。如果应用程序不能保存密钥,它们将在重启后重新生成,因此所有登录将无效。

https://learn.microsoft.com/pl - pl/aspnet/core/security/data protection/configuration/default settings?view=aspnetcore - 2.1

要在IIS上启用user profile,请检查应用池设置。如果你的主机在windows 7上,那么应用程序池的默认设置就会很混乱。

您可以通过多种方式将cookie添加到cookie集合中。下面的示例展示了编写cookie的两种方法:

Response.Cookies["userName"].Value = "patrick";
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);
HttpCookie aCookie = new HttpCookie("lastVisit");
aCookie.Value = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);