sev*_*rin 28 asp.net-mvc asp.net-identity asp.net-core-mvc asp.net-core
在我的ASP.NET Core MVC应用程序中,身份验证cookie的生命周期设置为"会话",因此它会一直持续到我关闭浏览器为止.我使用MVC的默认身份验证方案:
app.UseIdentity();
Run Code Online (Sandbox Code Playgroud)
如何延长cookie的生命周期?
use*_*696 42
您正在使用的ASP.NET Identity中间件是一些UseCookieAuthentication包含管道上的Cookie身份验证中间件的调用.这可以在GitHub上的Identity中间件的构建器扩展的源代码中看到.在这种情况下,配置基础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;
Run Code Online (Sandbox Code Playgroud)
要设置IdentityOptions类,该AddIdentity<TUser, TRole>方法有一个重载版本,允许使用一个lambda配置选项.因此,您只需传入lambda来配置选项.在这种情况下,您只需访问Cookies选项类的属性并ApplicationCookie根据需要进行配置.要改变你做某事的时间跨度
services.AddIdentity<ApplicationUser, IdentityRole>(options => {
options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromHours(1);
});
Run Code Online (Sandbox Code Playgroud)
编辑:该ExpireTimeSpan属性仅使用,如果在调用的时候HttpContext.Authentication.SignInAsync,我们传递的一个实例,AuthenticationProperties用IsPersistent设置为true.
尝试只用Cookie身份验证中间件事实证明,这个工程:如果我们只需登录没有这个选项,我们得到了持续的会话cookie中,如果我们派了一起,我们得到配置时持续我们设置什么饼干中间件.
使用ASP.NET身份做的方式是传递参数isPersistent的PasswordSignInAsync与价值true.这最终是要在通话SignInAsync中的HttpContext在通过AuthenticationProperties与IsPersistent设置为true.电话最终会是这样的:
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
Run Code Online (Sandbox Code Playgroud)
当RememberMe是,如果我们设置什么配置IsPersistent为true或false.
che*_*fly 11
对于2.0版本有一个答案,但它对我不起作用.我必须做:
services.ConfigureApplicationCookie(options =>
{
options.ExpireTimeSpan = TimeSpan.FromDays(30);
});
Run Code Online (Sandbox Code Playgroud)
默认值为14天.
对于ASP.NET Core 2.0
services.ConfigureApplicationCookie(options =>
{
options.Cookie.Name = "CookieName";
options.Cookie.Expiration = TimeSpan.FromDays(2);
});
Run Code Online (Sandbox Code Playgroud)
小智 7
在ASP.NET Core 2.0中,使用ExpireTimeSpan属性代替Cookie.Expiration。
services.ConfigureApplicationCookie(options =>
{
options.Cookie.Name = "CookieName";
options.ExpireTimeSpan = TimeSpan.FromHours(24);
options.SlidingExpiration = true;
});
Run Code Online (Sandbox Code Playgroud)
从文档:
Cookie.Expiration:获取或设置Cookie的寿命。当前,此选项禁止操作,并且在ASP.NET Core 2.1+中将不再使用。使用ExpireTimeSpan选项设置Cookie的到期时间。
| 归档时间: |
|
| 查看次数: |
38152 次 |
| 最近记录: |