目前,每次用户浏览器关闭时,他/她都必须重新登录。
当他们登录时,这是我用来在身份中对他们进行签名的代码。
SignInManager.SignIn(user, false, false);
这是我今天的身份验证配置方式
public void ConfigureAuth(IAppBuilder app)
{
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "SomeCustomName",
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(60),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
},
SlidingExpiration = false,
ExpireTimeSpan = TimeSpan.FromMinutes(60)
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(3));
app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);
}
如何在关闭浏览器的情况下保持用户登录状态 60 分钟?
您应该进行 2 项更改。
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
SlidingExpiration = true,
您希望使用 cookie,以便将其保留在浏览器中,并且在以后再次打开网站时可以重新读取。您还希望滑动过期时间,这样每个请求都会延长 cookie 的生命周期,否则用户将必须在 cookie 发出后 60 分钟后重新进行身份验证。 支持文档:
true
作为第二个参数。第三个参数仅在您使用两因素身份验证时才相关。
SignInManager.SignIn(user, true, false);
旁注为了安全起见,设置选项
CookieHttpOnly = true
也不是一个坏主意,它可以确保脚本/客户端代码无法访问 cookie。
Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddDays(7);