繁体   English   中英

使用 userManager.AddToRoleAsync 更新角色后如何刷新 cookie 中的 ASPNET 声明?

[英]How to refresh ASPNET claims in cookie after updating a role using userManager.AddToRoleAsync?

我正在使用 Identity Server 的 QuickStart UI 从多个 mvc 客户端登录用户。 然后,用户可以使用 userManager.AddToRoleAsync(roleName) 根据下拉菜单切换他们的角色。 我想刷新 cookie 并使用 User.IsInRole() 而不强制用户注销。

我尝试过的事情:

  1. 将 Cookie 的 ExpireTimeSpan 和 Max age 设置为 1 秒(这可行,但我想在 20 分钟不活动后使用它来注销用户。
  2. 将 UpdateAccesstokenClaisOnrefresh 设置为 true 并请求刷新令牌(不起作用)
  3. 更新安全标记(不起作用)

您可以在角色更改时发出新的 cookie,但这只会更改当前 session 中的用户角色。 如果他们在不同的选项卡或设备上打开了其他会话,则这些会话将保留旧 cookie。

cookie 是用户通过身份验证的“批准印章”,当应用程序收到有效的 cookie 时,它只进行最少的检查(如验证安全印章),然后使用 cookie 中存在的声明批准用户。

您的问题的一个可能解决方案可能是更改您的应用程序,而不是将用户声明存储在 cookie 中,而是在每次请求时从数据库中获取它们,并使用缓存(以避免过多的数据库请求)。 然后,如果您知道用户更改了角色,则可以使该缓存无效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM