我正在尝试创建一个程序,其中一次只有一个用户只能在一个角色中。我已经开发了一种笨重的方法来删除以前持有的角色,然后插入新角色,但我不喜欢这个。
我尝试在数据库级别执行此操作,在UsersInRoles表中执行一对多而不是多对多,但我似乎只是成功打破了“内置”角色管理系统。使用System.Web.Security.SqlRoleProvider
我觉得有一个更优雅的解决方案,因为我是MVC的新手,但我想不到它。
有人有建议吗?
答案 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提供的源代码来进行更改)。