我有一个ASP.NET MVC5应用程序,该应用程序曾经具有不确定的超时,因此用户直到实际单击"登录"链接之前才登录。使用以下代码在startup.auth.cs
中使用以下代码进行了更改。app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/"),
ExpireTimeSpan = TimeSpan.FromMinutes(29),
SlidingExpiration =true
});
问题在于,有些用户在更改之前似乎仍在登录。是否有一种方法可以登录这些用户而不将更改部署到应用程序中以存储/检查以在该应用程序中存储/检查以获取额外的值cookie?
最好的事情是引入SecurityStamp验证。您所有的cookie已经具有您可以检查的价值,而且您实际上并不需要自己做很多事情。这样的CookieAuthenticationProvider
添加CC_1:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/"),
ExpireTimeSpan = TimeSpan.FromMinutes(29),
SlidingExpiration = true,
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)),
},
});
此SecurityStampValidator
将使cookie每30分钟再生一次。您可以根据需要减少验证间隔,但我不建议间隔太短,因为它会增加DB的负载。我通常使用10分钟。
不幸的是,您仍然必须重新部署此更改,但编写的代码不多: - (