我正在使用 ASP.NET Membership 并注意到Roles 类中没有修改角色(例如其名称)的方法,只能创建和删除它们。
有可能还是不支持?
编辑:@CheGueVerra:是的,很好的解决方法。
你知道(额外的信用:))为什么这是不可能的吗?
我正在使用 ASP.NET Membership 并注意到Roles 类中没有修改角色(例如其名称)的方法,只能创建和删除它们。
有可能还是不支持?
编辑:@CheGueVerra:是的,很好的解决方法。
你知道(额外的信用:))为什么这是不可能的吗?
没有直接的方法来更改成员资格提供程序中的角色名称。
我将获取您要重命名的角色中的用户列表,然后将它们从列表中删除,删除角色,使用新名称创建角色,然后将之前找到的用户添加到使用新名称的角色中。
public void RenameRoleAndUsers(string OldRoleName, string NewRoleName)
{
string[] users = Roles.GetUsersInRole(OldRoleName);
Roles.CreateRole(NewRoleName);
Roles.AddUsersToRole(users, NewRoleName);
Roles.RemoveUsersFromRole(users, OldRoleName);
Roles.DeleteRole(OldRoleName);
}
这将更改角色中所有用户的角色名称。
跟进:角色,用于确保用户仅在系统中发挥他的作用,因此 User.IsInRole(ROLE_NAME) 将帮助您执行适用于用户及其所在角色的 BR 证券。如果您可以即时更改角色名称,您将如何验证用户是否确实处于该角色中。嗯,这就是我的理解,当我问到它时。
rtpHarry 编辑:将伪代码示例转换为可编译的 c# 方法
以编程方式重命名 ASP.NET 成员模型中的角色将是一件坏事™,因为角色名称在配置文件中用于定义权限。如果有一种编程方式来更改角色名称(将更改持久化到数据库),您将立即破坏 web.config 中任何使用数据库的 Web 应用程序的基于角色的安全配置,并且没有办法保证单个 Web 应用程序可以使用该会员数据库更改每个 Web 应用程序的配置。