加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:16:55 所属栏目:asp.Net 来源:网络整理
导读:在我的ASP.NET Core MVC应用程序中,身份验证cookie的生命周期设置为“Session”,因此它一直持续到关闭浏览器. 我使用MVC的默认认证方案: app.UseIdentity(); 如何延长Cookie的使用寿命? 解决方法 您正在使用的ASP.NET身份中间件是对UseCookieAuthenticatio
在我的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是哪些配置.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读