【问题标题】:ASP Core Cookie Auth, Added Claim Expires EarlyASP Core Cookie Auth,添加声明提前过期
【发布时间】:2021-01-24 18:33:36
【问题描述】:

我遇到了这个奇怪的问题...当用户登录时(使用signInManager.PasswordSignInAsync),我将他们重定向到一个剃须刀页面,他们在其中选择一些设置,然后我使用@向他们的 cookie 添加声明987654322@,但该声明似乎在 cookie 过期之前变得无效或丢失 - 用户仍在登录,但他的 cookie 似乎不再具有我添加的声明...

这是预期的行为吗?如果是,我如何才能使声明在整个 cookie 过期之前有效?知道用户登录后您无法更改 cookie,那么我还有其他方法可以实现吗?

这就是我在 Startup.cs 中添加 cookie 的方式:

  .AddIdentityCookies(c => c.ApplicationCookie.Configure(a =>
  {
    a.SlidingExpiration = true;
    a.ExpireTimeSpan = TimeSpan.FromMinutes(60 * 8);
    a.Events.OnRedirectToLogin = HandleCookieRedirect;
    a.Events.OnRedirectToAccessDenied = HandleCookieRedirect;
  }));

【问题讨论】:

    标签: cookies razor-pages asp.net-core-3.1


    【解决方案1】:

    您是否为您的 cookie 开启了“IsPersistent”=true? 另请注意,ExpiresUtc 采用“UTC”格式,因此请确保您使用的是: DateTime.UtcNow.AddMinutes(xxx) 方法或等效添加到期时间。

    【讨论】:

    • 我确实设置了 IsPersistent,它基于当我调用 signInManager.SignInWithClaimsAsync 时用户是否选中了“记住我”框这就是我添加声明的方式 await signInManager.SignInWithClaimsAsync(user, RememberMe, new[] { new Claim(WebConstants.GroupClaim, SelectedGroup.ToString()) }) 有没有办法设置仅该声明到期?
    猜你喜欢
    • 2018-12-16
    • 2020-08-04
    • 2019-04-19
    • 2015-04-28
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 2018-09-29
    • 2019-01-19
    相关资源
    最近更新 更多