如何在ASP .Net Identity Core

时间:2016-08-24 00:16:43

标签: asp.net-core asp.net-core-identity

我有一个登录页面,记住了我的选项。我想配置记住我的cookie过期时间要长一些,比如说一个月。

我可以使用CookieAuthenticationOptions.ExpireTimeSpan属性,但这不起作用"只有"对于RememberMe选项。

我希望用户在当前浏览会话中登录几分钟,例如登录后30分钟(如果用户没有选择RememberMe选项)。在这种情况下,我会使用ExpireTimeSpan = TimeSpan.FromMinutes(30)

有没有办法可以配置类似" RememberMeDuration"选择RememberMe时和未选择时配置两个不同的设置? - 开箱即用(至少不会为这么小的功能创建全新的中间件)

1 个答案:

答案 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是互斥的