2015-11-02 74 views
0

两个或多个表我正在使用asp.net mvc4 & EF6在那里我已经为管理员&用户两个表,我想设置授权角色为他们每个人的网站。到目前为止,我已经成功设置了users的角色,但如果我有两个或更多模型,我无法知道如何在自定义RoleProvider类中设置角色。这里是我的代码,管理Roleprovider在asp.net mvc的

public class MgtRoleProvider : RoleProvider 
{ 
    public override string[] GetRolesForUser(string username) 
    { 
     rental_dbEntities db = new rental_dbEntities(); 
     string userRole = db.TblUsers.Where(a => a.username == username).FirstOrDefault().role; 
     string[] result = { userRole }; 
     return result; 
    } 
} 

如何设置两个或更多的模型和方法GetRolesForUser返回自己的角色值?糟糕的需要这个帮助。谢谢。

+0

你想在多个用户名传递到方法? – Luke

+0

我想返回多个模型的角色值。 –

+0

具有用户角色和声明的ASP.NET标识中的重点在于,您不需要为用户提供多个表。什么阻止你拥有“管理员”角色?两个表中是否存在管理员和非管理员的用户名? – Luke

回答

1

添加在第二查询您的TblAdmins表并返回他们两个:

public class MgtRoleProvider : RoleProvider 
{ 
    public override string[] GetRolesForUser(string username) 
    { 
     rental_dbEntities db = new rental_dbEntities(); 
     string userRole = string.Empty; 
     string adminRole = string.Empty; 

     var user = db.TblUsers.Where(a => a.username == username).FirstOrDefault() 

     if (user != null) 
     { 
      userRole = user.role; 
     } 

     var admin = db.TblAdmins.Where(a => a.username == username).FirstOrDefault();  

     if (admin != null) 
     { 
      adminRole = admin.role; 
     } 

     string[] result = { userRole, adminRole }; 
     return result; 
    } 
} 
+0

如果我以用户身份登录,我得到'adminRole'的'null'错误,如果我以管理员身份登录'userRole'。 –

+0

检查更新代码中的空值。我希望这可以帮助 – Luke

+0

是的,这是有效的,只是一个小小的更正。它应该是'var user&var admin'而不是'string user&string admin'。 –