如何访问Microsoft身份3中当前用户以外的其他声明

时间:2016-09-07 20:46:17

标签: asp.net authentication asp.net-core-mvc

我正在使用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”集合但计数为零且集合为空。 如何访问当前用户以外的其他声明并能够添加和删除声明?

1 个答案:

答案 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"));