【问题标题】:How can I get a list of Users that includes their Claims from a UserManager?如何从 UserManager 获取包含其声明的用户列表?
【发布时间】:2019-12-14 11:27:59
【问题描述】:

我有一个使用_userManager.Users.ToList() 检索的用户列表(来自 AspNetUsers 表),但他们没有初始化声明(存储在 AspNetClaims 表中)。有没有办法用他们的声明正确初始化用户?

这是我目前所拥有的(使用下面的 ApplicationUser 实现):

var emails=_userManager.Users.Select(x=>x.Email).ToList();
var users= ?? //somehow get ClaimsPrincipal from emails??

ApplicationUser 类(实现 IdentityUser):

public class ApplicationUser : IdentityUser
{
    public string LGID { get; } = ""; //claim set in claims table

    public ApplicationUser() { }

    public ApplicationUser(ClaimsIdentity identity)
    {
        IEnumerable<Claim> claims = identity.Claims;
        foreach (Claim c in claims)
        {
            switch (c.Type)
            {
                case "LGID":
                    LGID = c.Value;
                    break;
       ......

【问题讨论】:

    标签: c# claims


    【解决方案1】:

    您可以通过以下方式获取用户:var user = await _userManager.FindByEmailAsync("mail");

    然后为每个用户做这样的事情:

    var claims = await _userManager.GetClaimsAsync(user.Id);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多