ASP.NET MVC:限制每个用户一个角色

时间:2011-09-01 19:07:38

标签: asp.net-mvc roles

我正在尝试创建一个程序,其中一次只有一个用户只能在一个角色中。我已经开发了一种笨重的方法来删除以前持有的角色,然后插入新角色,但我不喜欢这个。

我尝试在数据库级别执行此操作,在UsersInRoles表中执行一对多而不是多对多,但我似乎只是成功打破了“内置”角色管理系统。使用System.Web.Security.SqlRoleProvider

我觉得有一个更优雅的解决方案,因为我是MVC的新手,但我想不到它。

有人有建议吗?

2 个答案:

答案 0 :(得分: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));
    }
}

答案 1 :(得分:0)

您显然无法更改数据库架构并希望默认角色提供程序能够正常工作。您可能需要创建一个新的(如果您愿意,可以使用MS提供的源代码来进行更改)。