2013-08-06 3 views
1

애플리케이션에 여러 개의 레스토랑 엔터티가 있다고 가정 해 봅니다. 각 레스토랑 등 자신의 매니저, 금융, 요리사, 정의 할 수 있습니다.NET RoleProvider 확장

예 :

  • 사용자 1 레스토랑 1
  • 사용자 2의 관리자가 레스토랑 1에서 금융은
  • 사용자 3이 레스토랑 1
  • 에서의 요리입니다입니다

  • user1은 restaurant2의 금융 기관입니다.

RoleProvider에서 호출하고 싶은 것은 IsUserInRole (user1, manager, restaurant1)입니다. 처음 두 매개 변수는 지원되지만 마지막 매개 변수는 지원되지 않습니다.

.NET RoleProvider가이 시나리오를 해결할 수 있습니까?

답변

2

RoleProvider의 대해 isUserInRole 방법의 구문은 다음과 같습니다

public abstract bool IsUserInRole(
    string username, 
    string roleName 
) 

그래서 재정의하는 동안, 당신은 세 번째 매개 변수를 포함 할 수 없습니다.

자신 만의 방법을 정의하지 왜

는 (별도의 'S') 말 :

IsUserInRoles(string username, string roleName1, string roleName2) 

또는 더 나은 방법 :

IsUserInRoles(string username, string[] roles) 

몸이 좋아하는 것이 될 :

protected bool IsUserInRoles(string username, string[] rolenames) 
{ 


if (username == null || username == "") 
    throw exception; 

    if (rolenames == null || rolenames.Length==0) 
    throw exception; 

//code to check if user exists in all roles 
// you can call even the default IsUserInRole() method one by one for all roles 
    bool userInRoles=true; 
foreach (string role in roles) 
    { 
    if(!UserIsInRole(role)) 
      // set the boolean value to false 
       userInRoles = false; 
    } 

    return userInRoles; 
}