2

我有一个带有记住我选项的登录页面。我想将记住我的 cookie 有效期配置为更长,比如一个月。我可以使用该CookieAuthenticationOptions.ExpireTimeSpan属性,但“仅”对 RememberMe 选项不起作用。我希望用户在当前浏览会话中登录几分钟,例如登录后 30 分钟(如果用户没有选择 RememberMe 选项)。在这种情况下,我会使用ExpireTimeSpan = TimeSpan.FromMinutes(30).

有没有办法我可以配置类似“RememberMeDuration”的东西来配置两个不同的设置时选择记住我和不选择时?- 开箱即用(至少不会为这样的小功能创建全新的中间件)

4

1 回答 1

4

绝对到期可用于实现记住我(例如 30 天)功能。使用 Identity 时,设置ExpiresUtcSignInAsync密码检查之后。

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

于 2016-08-24T03:53:36.367 回答