我有一个登录页面,记住了我的选项。我想配置记住我的cookie过期时间要长一些,比如说一个月。
我可以使用CookieAuthenticationOptions.ExpireTimeSpan
属性,但这不起作用"只有"对于RememberMe选项。
我希望用户在当前浏览会话中登录几分钟,例如登录后30分钟(如果用户没有选择RememberMe选项)。在这种情况下,我会使用ExpireTimeSpan = TimeSpan.FromMinutes(30)
。
有没有办法可以配置类似" RememberMeDuration"选择RememberMe时和未选择时配置两个不同的设置? - 开箱即用(至少不会为这么小的功能创建全新的中间件)
答案 0 :(得分:4)
绝对到期时间可用于实现记住我(比方说30天)功能。 使用Identity时,请在密码检查后在SignInAsync期间设置ExpiresUtc。
var au = new ApplicationUser() { Email = model.Email };
var r1 = await _userManager.CheckPasswordAsync(au, model.Password);
if (r1)
{
await _signInManager.SignInAsync(au, new AuthenticationProperties() { ExpiresUtc = DateTime.UtcNow.AddDays(30) });
}
如果使用不带标识的Cookie中间件,则在自定义密码检查成功后设置ExpiresUtc。
来自文档:
await HttpContext.Authentication.SignInAsync(
"MyCookieMiddlewareInstance",
principal,
new AuthenticationProperties
{
ExpiresUtc = DateTime.UtcNow.AddDays(30)
});
IsPersistent和ExpiresUtc是互斥的