asp.net-mvc – ASP.NET Core MVC:设置身份cookie的到期

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – ASP.NET Core MVC:设置身份cookie的到期前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的ASP.NET Core MVC应用程序中,身份验证cookie的生命周期设置为“Session”,因此它一直持续到关闭浏览器.
我使用MVC的默认认证方案:
app.UseIdentity();

如何延长Cookie的使用寿命?

解决方法

您正在使用的ASP.NET身份中间件是对UseCookieAuthentication的一些调用,包括管道上的Cookie身份验证中间件.这可以在Identity中间件 here on GitHub的构建器扩展的源代码中看到.在这种情况下,配置底层Cookie身份验证应如何工作所需的选项将封装在IdentityOptions上,并在设置依赖注入时进行配置.

实际上,查看我链接到的源代码,可以看到当您调用app.UseIdentity()时,会运行以下内容

var options = app.ApplicationServices.GetrequiredService<IOptions<IdentityOptions>>().Value;
app.UseCookieAuthentication(options.Cookies.ExternalCookie);
app.UseCookieAuthentication(options.Cookies.TwoFactorRememberMeCookie);
app.UseCookieAuthentication(options.Cookies.TwoFactorUserIdCookie);
app.UseCookieAuthentication(options.Cookies.ApplicationCookie);
return app;

要设置IdentityOptions类,AddIdentity< TUser,TRole>方法有一个重载版本,允许使用一个lambda配置选项.因此,您只需传递一个lambda来配置选项.在这种情况下,您只需访问选项类的Cookie属性,并根据需要配置ApplicationCookie.要改变你做的事情的时间间隔

services.AddIdentity<ApplicationUser,IdentityRole>(options => {

    options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromHours(1);

});

编辑:ExpireTimeSpan属性仅在调用HttpContext.Authentication.SignInAsync时才会使用,我们将IsProperties设置为true的AuthenticationProperties实例中传递.

尝试使用Cookie认证中间件,事实证明这是有效的:如果我们刚刚登录没有这个选项,我们得到一个持续会话的cookie,如果我们一起发送,我们得到一个cookie,持续我们在配置时设置中间件

使用ASP.NET身份的方法是将值为true的PasswordSignInAsync的参数传递给参数.这最终是调用SignInAsync的HttpContext传递AuthenticationProperties中的IsPersistent设置为true.该通话最终是这样的:

var result = await _signInManager.PasswordSignInAsync(model.Email,model.Password,model.RememberMe,lockoutOnFailure: false);

如果我们将IsPersistent设置为true或false,则RememberMe是哪些配置.

猜你在找的.NET Core相关文章