如何从 LinqToSql 列表中添加声明?
How do I add claims from a LinqToSql list?
我创建了一个使用 Active Directory 和 Owin 对我的用户进行身份验证的应用程序。该应用程序的范围要求我使用现有 CMS 数据库中定义的角色来授权自定义应用程序中的用户。这是我尝试过的:
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, @groups.?));
}
我提前为问号道歉,但它目前是我卡住的地方。我找不到,也想不出任何可以让我在此 for 循环中按顺序将它们拉出的东西。如果我从 AD 添加声明,我将尝试遵循我通常会做的事情,这很简单:
var groups = userPrincipal.GetAuthorizationGroups();
foreach (var @group in groups)
{
identity.AddClaim(new Claim(ClaimTypes.Role, @group.Name));
}
提前致谢!
它正在寻找 @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()));
}
我创建了一个使用 Active Directory 和 Owin 对我的用户进行身份验证的应用程序。该应用程序的范围要求我使用现有 CMS 数据库中定义的角色来授权自定义应用程序中的用户。这是我尝试过的:
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, @groups.?));
}
我提前为问号道歉,但它目前是我卡住的地方。我找不到,也想不出任何可以让我在此 for 循环中按顺序将它们拉出的东西。如果我从 AD 添加声明,我将尝试遵循我通常会做的事情,这很简单:
var groups = userPrincipal.GetAuthorizationGroups();
foreach (var @group in groups)
{
identity.AddClaim(new Claim(ClaimTypes.Role, @group.Name));
}
提前致谢!
它正在寻找 @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()));
}