c# – Asp.net身份 – 在iis上重置cookie和会话回收(重启)

我用asp.net身份验证实现了asp.net mvc.

我使用过基于cookie的身份验证.重新启动IIS /停止并启动我的站点的IIS后,当我打开我的网站时,用户将自动登录到系统.

用户cookie未清除且仍对用户有效.重启iis后如何强制用户注销?

我使用过网站的默认样本.
http://www.nuget.org/packages/Microsoft.AspNet.Identity.Samples

《c# – Asp.net身份 – 在iis上重置cookie和会话回收(重启)》

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无效.建议不要低于此值 – 这将导致性能问题.

点赞