我正在使用Microsoft Identity 3.我可以访问当前用户的声明。 但我无法弄清楚如何为其他用户做同样的事情。
对于当前用户,在控制器内部,我可以通过以下方式访问声明集:
IEnumerable<Claim> claims = User.Claims;
我可以看到所有用户声明,我可以按如下方式添加声明:
var user = await GetCurrentUserAsync();
await _userManager.AddClaimAsync(user, new Claim("role", "manager"));
但如果我这样做:
IdentityUser user = await _userManager.FindByIdAsync(userid);
“user”具有“Claims”集合但计数为零且集合为空。 如何访问当前用户以外的其他声明并能够添加和删除声明?
答案 0 :(得分:1)
我想做的事情的解决方案变得非常简单 - 即使我不完全理解“为什么”。我可以在下面将IdentityUser向上转换为ApplicationUser,它可以工作:
IdentityUser user = await _userManager.FindByIdAsync(userId);
// The following will show the current claims:
var claims = await _userManager.GetClaimsAsync((ApplicationUser) user);
// The following adds a new claim:
await _userManager.AddClaimAsync((ApplicationUser) user, new Claim("time", "yesterday"));