簡體   English   中英

如何從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名稱,因此需要將其@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()));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM