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

Asp.net mvc ASP.NET MVC:限制每个用户一个角色,asp.net-mvc,roles,Asp.net Mvc,Roles,我正在尝试创建一个程序,在这个程序中,一次只能有一个用户扮演一个角色。我开发了一种笨拙的方法来删除以前担任的角色,然后插入新角色,但我不喜欢这样 我曾尝试在数据库级别执行此操作,一对多而不是UsersInRoles表中的多对多,但我似乎只成功地打破了“内置”角色管理系统。使用System.Web.Security.SqlRoleProvider 只是觉得有一个更优雅的解决方案,因为我是MVC新手,但我想不起来 有人有什么建议吗?为什么不这样做呢。i、 e.将用户添加到一个角色会将其从所有其他角色

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

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

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


有人有什么建议吗?

为什么不这样做呢。i、 e.将用户添加到一个角色会将其从所有其他角色中移除

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));
    }
}

为什么不这样做呢。i、 e.将用户添加到一个角色会将其从所有其他角色中移除

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));
    }
}

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

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

您是否使用内置的
System.Web.Security.SqlRoleProvider
?是的。抱歉,忘记指定。您是否使用内置的
System.Web.Security.SqlRoleProvider
?是的。对不起,忘记指定了。