2009-11-24 4 views
0

사용자 권한 부여시 다양한 역할 유형을 고려해야합니다. 예 : John은 위치 관리자가되어야하며 새 컴퓨터를 주문하려면 사무 용품 부서 관리자 여야합니다.다른 유형의 역할을 가진 ASP.NET 공급자

Roles.GetRolesForUser ("John")의 역할 문제는 문자열 배열 만 반환 할 수 있습니다.

사용자 지정 roleProvider 및 사용자 지정 roleManager를 사용해야합니까? 또는 GetUsersWithProfileProperties()와 같은 메서드를 추가하기 위해 사용자 지정 ProfileManager를 개발해야합니까?

모든 의견을 환영합니다!

의 Thibaut

편집 : 위의 예에서 나는 4 개 가지 모음 역할의 4 개 종류로 많이 가질 수 단순화된다.

편집 : 나는 very similar question

+1

나는이 방법이 Roles.GetUsersInRole를 ("") – Saar

+0

나는이 문제를 이해하지 못하는거야 존재 볼에 사람을 도움이 될 수 있습니다 희망 특정 역할에 대해 목록 사용자를 반환하는 방법에 대해 묻는 중입니다.이 두 가지는 연결되지 않는 것입니까? – Murph

+0

정말 명확하지 않았기 때문에 제 게시물을 편집했습니다. 문제의 핵심은 내가 다른 종류의 역할을한다는 것입니다. 어쩌면 다중 공급자 역할 공급자를 사용하여 구현할 수도 있지만 구현하기가 복잡해 보입니다. – teebot

답변

1

각 하위 역할 공급자에 액세스하기위한 Path-To-Level typew 규칙을 사용하여 "CompositeRoleProvider"를 만들지 않는 이유는 무엇입니까? 여러 역할 공급자를 만들어야하지만 복합 또는 최상위 공급자가 모든 작업을 수행합니다. ProfileProvider를 사용하여 유사한 작업을 수행 할 계획입니다.

2

당신이 작성한 것; 필요한 모든 것을 현재 즉시 사용할 수 있습니다.

// Return all Users in a Role 
    string[] users; 
    users = Roles.GetUsersInRole("RoleName"); 
    // Return all Roles for a User 
    string[] roles; 
    roles = Roles.GetRolesForUser(); 
    // Search through Membership store locating users with a role 
    MembershipUserCollection mu; 
    mu = Membership.GetAllUsers(); 
    // Loop through all membership users looking for users in a role 

    foreach(MembershipUser m in mu){ 
     if(Roles.IsUserInRole(m.UserName, "Role Name")){ 
      // Do something 

      // We can even nest to x levels 
      if (Roles.IsUserInRole(m.UserName, "Another Role")){ 

       // Do something else 
      } 
     } 
    } 

질문에 대한 오해를 해소하십시오.

+0

그런 다음 배열을 평면으로 만들어야합니다 ("관리자"와 "사무 용품"이 같은 레벨에 있음). 이것이 작동 할 수있는 동안, 이것은 약간은 해킹과 같은 느낌. – teebot

+0

또한 또 다른 반복자를 추가해야하는 세 번째 유형의 역할이있는 경우 어떻게해야합니까? – teebot

+0

역할은 사용자 정의이므로 강력하게 입력되는 것을 볼 수 없습니다. 나는 두려워합니다. –

0

저는 비슷한 문제를 해결하는 방법을 연구하고 있으며, 최선의 방법은 사용자 지정 역할 공급자를 구현하는 것입니다.

저는이 (http://msdn.microsoft.com/en-us/library/317sza4k(v=vs.100).aspx)을 기반으로 사용하고 있습니다. (IsManager, GetDepartment, ecc).

데이터는 aspnet_users 테이블에 조인 된 사용자 정의 테이블에 저장됩니다. 당신이주는 예는 사용자가이 있는지 여부를 테스트에 관한 것입니다 -

은 미래 :

관련 문제