2013-08-06 102 views
1

假設我的應用程序中有多個餐廳實體。每家餐廳都可以定義自己的管理者,金融家,廚師等擴展.NET RoleProvider

例子:

  • user1的經理restaurant1
  • 用戶2金融家restaurant1
  • 用戶3在restaurant1

  • user1是餐館中的金融家2

我想在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; 
}