我用asp.net身份验证实现了asp.net mvc.
我使用过基于cookie的身份验证.重新启动IIS /停止并启动我的站点的IIS后,当我打开我的网站时,用户将自动登录到系统.
用户cookie未清除且仍对用户有效.重启iis后如何强制用户注销?
我使用过网站的默认样本.
http://www.nuget.org/packages/Microsoft.AspNet.Identity.Samples
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
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))
}
});
最佳答案 重新启动IIS时,Cookie不会失效 – 这不是HTTP协议的工作方式.在IIS重新启动时无效的Cookie可能会导致生产中出现一些奇怪的行为 – IIS可能会随时出现问题,或者可能存在使用少量IIS服务器来处理请求的负载均衡器 – 如果其中一个服务器重新启动会发生什么?
无论如何,您可以通过批量更新数据库中的ApplicationUser.SecurityStamp来杀死所有用户的所有cookie.在Startup.Auth.cs中设置validateInterval:TimeSpan.FromMinutes(2) – 这将在SecurityStamp更新的2分钟内使所有cookie无效.建议不要低于此值 – 这将导致性能问题.