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