2012-10-20 76 views
0

我一直在學習如何從一些教程實現CustomRoleProvider和管理,以實現兩個主要方法如下Implemeting CustomRoleProvider和使用在MVC3 asp.net

public override string[] GetRolesForUser(string userName) 
    { 
     string connectionString = 
      ConfigurationManager.ConnectionStrings["myDb"].ConnectionString; 
     DataContext context = new DataContext(connectionString); 
     Table<UserObj> usersTable = context.GetTable<UserObj>(); 
     UserObj userObj = usersTable.SingleOrDefault(u => u.UserName == userName); 
     string roleId = userObj.UserRoleID; 

     if (roleId != null) 
      return roleId.Select(c => c.ToString()).ToArray(); 
     else 
      return new string[] { }; 

    } 

    public override bool IsUserInRole(string userName, string roleName) 
    { 
     string connectionString = 
     ConfigurationManager.ConnectionStrings["myDb"].ConnectionString; 
     DataContext context = new DataContext(connectionString); 
     Table<UserObj> usersTable = context.GetTable<UserObj>(); 
     UserObj userObj = usersTable.SingleOrDefault(u => u.UserName == userName); 

     if (userObj != null) 
     { 
      string roleId = userObj.UserRoleID; 
      if (roleId.Equals(roleName)) 
       return true; 
     } 
     return false; 
    } 

然後,我添加的授權作用[授權(角色=「管理員」)]的控制器的索引方法,我只需要管理員訪問。當我試圖訪問該頁面時,它似乎進行限制確定,例如,如果我輸入網址:

 http://localhost:60353/module 

..它重定向我

 http://localhost:60353/Account/LogOn?ReturnUrl=%2fmodule 

然而,角色沒」似乎被檢查。

我在這裏做了什麼錯?

回答

0

我也面臨同樣的問題,但我能叫CustomProvider方法:

IsUserInRoles()

明確,但它似乎是因爲輔助功能沒有改變是正確的.. ..它總是隻重定向到登錄屏幕.......