如何从LinqToSql列表中添加声明?

时间:2017-11-09 18:36:43

标签: c# asp.net-mvc owin claims-based-identity

我创建了一个使用Active Directory和Owin对我的用户进行身份验证的应用程序。应用程序的范围要求我使用现有CMS数据库中定义的角色来授权自定义应用程序中的用户。这是我尝试过的:

var groups = userPrincipal.GetAuthorizationGroups();
foreach (var @group in groups)
{
    identity.AddClaim(new Claim(ClaimTypes.Role, @group.Name));
}

我提前为问号道歉,但目前我正陷入困境。我找不到,也没想到任何可以使用的东西,这将允许我在这个for循环中按顺序将它们拉出来。我试图遵循我通常会做的事情,如果我从AD添加声明,这只是:

http://www.example.com/dummy/public/index

提前致谢!

1 个答案:

答案 0 :(得分:0)

它正在寻找@group名称,因此需要强制转换为字符串。请参阅以下内容:

CMSContext _cms = new CMSContext();
var user = @"STRING\" + userPrincipal.Name;
var result = (from rls in _cms.CMSRoles
          join urs in _cms.CMSUserRoles on rls.RoleID equals urs.RoleID
          join usrs in _cms.CMSUser on urs.UserID equals usrs.UserID
          where usrs.Username == user
          select rls.RoleName).ToList();
//using foreach to get roles one by one
foreach(var @group in groups)
{
    identity.AddClaim(new Claim(ClaimTypes.Role, @group.ToString()));
}