如何使用.NET中的成员资格重命名角色?

jua*_*uan 6 security asp.net-membership roles

我正在使用ASP.NET Membership,并注意到Roles类中没有一个方法来修改角色(例如它的名称),只是为了创建和删除它们.

有可能还是不支持?

编辑:@CheGueVerra:是的,很好的解决方法.

你知道吗(额外的信用:))为什么不可能?

Che*_*rra 20

没有直接的方法来更改成员资格提供程序中的角色名称.

我将获取您要重命名的角色的用户列表,然后从列表中删除它们,删除角色,使用新名称创建角色,然后使用新名称将之前找到的用户添加到角色.

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);
}
Run Code Online (Sandbox Code Playgroud)

这将更改角色中所有用户的角色名称.

跟进:角色,用于确保用户只在系统中扮演他的角色,因此User.IsInRole(ROLE_NAME)将帮助您强制执行适用于用户及其所在角色的BR证券.如果您可以动态更改角色名称,如何验证用户是否确实在该角色中.当我问起这件事时,这就是我的理解.

rtpHarry edit:将伪代码转换为可编译的c#方法


Har*_*lby 5

以编程方式重命名ASP.NET成员资格模型中的角色将是一件坏事,因为角色名称在配置文件中用于定义权限.如果有一种编程方式来更改角色名称(将更改持久保存到数据库中),您将立即在使用数据库的任何Web应用程序中断开web.config中基于角色的任何安全配置,并且没有办法保证单个Web应用程序可以使用该Membership DB更改每个Web应用程序的配置.

  • 如果你删除一个角色会不会发生同样的事情? (3认同)