添加新声明时更新记录的身份声明

Posted

技术标签:

【中文标题】添加新声明时更新记录的身份声明【英文标题】:Update logged Identity claims when add new claims 【发布时间】:2022-01-22 21:30:18 【问题描述】:

我有一个带有 Angular 的 .net core web api 应用程序。我使用 AspNetCore Identity。我有一个带有 userId 和 value 列的声明表。从 Angular 站点调用 createnewuser 方法,它们调用注册用户方法。这里没有任何问题。

我想将新声明添加到 httpcontext current user claims 列表中。 我试过了,但对我没有帮助。

Added a claim to an existing HttpContext User

但是当使用新令牌重新进行身份验证时,我可以看到在 _httpContext.HttpContext.User.Claims 中添加了新声明。如何查看将新声明添加到当前身份 (_httpContext.HttpContext.User.Claims)?

我从 httpontext 获得了当前用户 ID 值。

var parentId = _httpContext.HttpContext.User.Claims?.FirstOrDefault(p => p.Type == "uid");
                     if (parentId != null && parentId.Value != null)
                     
                        await _IdentityService.AddClaimAsync(new RegisterRequest()
                         
                          "newclaim" = "new-claim-key",
                          userId = parentId.Value
                      );

【问题讨论】:

你检查了吗:***.com/questions/24587414/… 【参考方案1】:

我认为最好从 db 那里得到这样的记录:

var claimList = userManager.
GetClaimsAsync(await_userManager.GetUserAsync(_httpContext.HttpContext.User))

虽然这不是一个非常准确的方法,但它是最可靠的方法。这样就可以在db中获取最新的claim list

【讨论】:

以上是关于添加新声明时更新记录的身份声明的主要内容,如果未能解决你的问题,请参考以下文章

如何强制Azure Active Directory身份验证服务重新发出带有更新声明的id_token?

使用 Windows 身份验证时向身份添加自定义声明

向 Windows 身份添加声明

C# 修改身份或添加声明

确保经过身份验证的用户只能更新自己的记录

在身份验证过滤器中添加自定义声明。在过滤器中获取用户 ID。弹簧靴