2011-09-01 76 views
0

我想創建一個程序,只有一個用戶一次只能有一個角色。我已經開發出一種笨重的方法來消除以前擔任的角色,然後插入新的角色,但我不喜歡這樣。ASP.NET MVC:限制每個用戶的一個角色

我試圖在UsersInRoles表中做到一對多而不是多對多,但我似乎只能成功打破「內置」角色管理系統。使用System.Web.Security.SqlRoleProvider

只是覺得有一個更優雅的解決方案,因爲我是MVC的新手,但我想不起來。

任何人有一個建議?

+0

你在使用內建的'System.Web.Security.SqlRoleProvider'嗎? – kenwarner

+0

是的,我是。對不起,忘了指定。 – RomaH

回答

3

爲什麼不做這樣的事情。即讓它添加一個用戶到一個角色,將他們從其他角色中移除。

public class SingleRoleProvider : SqlRoleProvider 
{ 
    public override void AddUsersToRoles(string[] usernames, string[] roleNames) 
    { 
     // remove any existing roles users belong to 
     RemoveUsersFromRoles(usernames, GetAllRoles()); 

     //only accept first role, your app should only be adding one at a time 
     base.AddUsersToRoles(usernames, roleNames.Take(1)); 
    } 
} 
0

你顯然不能更改數據庫模式,並期望默認角色提供程序工作。您可能必須創建一個新的(如果您願意,您可以使用MS提供的源代碼進行更改)。

相關問題