有沒有一種方法可以獲取Windows身份驗證用戶所在的角色列表,而無需通過WindowsPrincipal.IsInRole
方法進行明確檢查?如何檢索用戶所屬的所有角色(組)?
回答
WindowsPrincipal.IsInRole
只是檢查用戶是否是具有該名稱的組的成員;一個Windows Group 是一個角色。您可以從WindowsIdentity.Groups
屬性中獲取用戶所屬的組的列表。
你可以從WindowsIdentity
您WindowsPrincipal
:
WindowsIdentity identity = WindowsPrincipal.Identity as WindowsIdentity;
,或者你可以從一個工廠方法得到它的WindowsIdentity:
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsIdenity.Groups
是IdentityReference
集合這只是給你的SID的組。如果您需要的組名,您將需要翻譯IdentityReference
爲NTAccount
,並獲得價值:
var groupNames = from id in identity.Groups
select id.Translate(typeof(NTAccount)).Value;
編輯:喬希打我吧! :)
試試這個
using System;
using System.Security.Principal;
namespace ConsoleApplication5
{
internal class Program
{
private static void Main(string[] args)
{
var identity = WindowsIdentity.GetCurrent();
foreach (var groupId in identity.Groups)
{
var group = groupId.Translate(typeof (NTAccount));
Console.WriteLine(group);
}
}
}
}
如果沒有連接到域服務器,的翻譯功能可能會拋出異常「//The trust relationship between this workstation and the primary domain failed.
」 但是對於大多數羣體,這將是好了,personnally我使用:
foreach(var s in WindowsIdentity.GetCurrent().Groups) {
try {
IdentityReference grp = s.Translate(typeof (NTAccount));
groups.Add(grp.Value);
}
catch(Exception) { }
}
這就是答案。 – 2014-12-24 18:20:01
在一個ASP.NET MVC的網站,你可以做這樣的:
添加到您的Web.config:
<system.web>
...
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" />
...
</system.web>
然後你可以使用Roles.GetRolesForUser()
讓所有的Windows組用戶是的成員。確保你是using System.Web.Security
。
- 1. 如何檢索用戶使用SOAP服務的所有組/角色?
- 2. WMI檢索用戶所屬的組?
- 3. 使用Java從LDAP檢索所有用戶及其角色
- 4. 如何獲取角色中的所有用戶,包括角色中的角色?
- 5. 如何使用Auth模塊檢索Kohana 3中的所有用戶和所有角色?
- 6. 如何撤銷登錄角色中的所有組角色
- 7. 如何獲取本地用戶所屬的所有本地組
- 8. 通過ADFS檢索.NET Web應用程序中的所有用戶和角色
- 9. ASP.NET MVC用戶在所有角色
- 10. CakePHP用戶角色檢索
- 11. 如何使用linq to sql檢查組的所有用戶都具有用戶角色?
- 12. 獲取當前用戶角色下的所有角色
- 13. Microsoft Azure AD oauth標識用戶所屬的用戶角色和組(orgunit)
- 14. JAVA從所有Windows用戶帳戶檢索所有打印機
- 15. 如何列出頁面上特定角色的所有用戶?
- 16. 如何獲取acl角色對應的所有用戶?
- 17. 如何獲取特定角色的所有用戶?
- 18. 如何獲取當前用戶的所有角色?
- 19. 如何將所有用戶添加到Parse.com中的角色?
- 20. 如何獲得來自特定角色的所有用戶
- 21. 如何刪除Kohana中的所有用戶角色3
- 22. UserPrincipal.GetAuthorizationGroups()不檢索所有組
- 23. Django檢索用戶的所有評論
- 24. 檢索所有用戶asyncronously .NET的MVC
- 25. 如何獲取systemuser的所有角色?
- 26. LDAP查詢,檢索用戶有權訪問的所有組
- 27. 無法檢索具有所有用戶的組
- 28. Firebase Android - 檢索有關組中所有用戶的信息
- 29. 如何檢索使用Python的給定用戶的所有Tweets和屬性?
- 30. Umbraco 5如何獲得所有角色和用戶
我用`var identity = User.Identity作爲WindowsIdentity;` – Jaider 2014-01-20 15:40:48