2013-03-27 2 views
0

У меня есть веб-сайт, который работает в интрасети со встроенной системой безопасности Windows.ASP.NET - Получить группы безопасности для пользователя

<authentication mode="Windows" /> 
<identity impersonate="true" /> 
<authorization> 
    <allow roles="MyDomain\Group1,MyDomain\Group2"/> 
</authorization> 

Как определить, принадлежит ли текущий пользователь MyDomain \ Group1 или MyDomain \ Group2. Я попытался это ниже, но он выдает ошибку обратно:

PrincipalContext principalContext = new PrincipalContext(ContextType.Domain); 
     GroupPrincipal group = GroupPrincipal.FindByIdentity(principalContext, "MyDomain\Group1"); 
     PrincipalSearchResult<Principal> user = UserPrincipal.Current.GetGroups(); 

     foreach (Principal principal in group.Members) 
     { 
      if (UserPrincipal.Current.Name == principal.Name) 
      { 
       // Enable Functionality 

       break; 
      } 
     } 

Как определить, является ли текущий пользователь принадлежит MYDOMAIN \ Group1 или MYDOMAIN \ группа_2?

+0

«но он возвращает ошибку», вы забыли указать ошибку –

ответ

0

Вместо использования API Active Directory, вы можете просто использовать класс Roles:

Roles.GetRolesForUser()

Просто добавьте это в ваш web.config:

<roleManager defaultProvider="WindowsProvider" 
    enabled="true" 
    cacheRolesInCookie="false"> 
    <providers> 
    <add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider" /> 
    </providers> 
</roleManager> 

См http://msdn.microsoft.com/en-us/library/system.web.security.windowstokenroleprovider.aspx для получения дополнительной информации ,

Смежные вопросы