Как переименовать роль, используя членство в .NET? - PullRequest
6 голосов
/ 11 ноября 2008

Я использую членство в ASP.NET и заметил, что в классе Roles * нет метода , чтобы изменить роль (например, ее имя), только для создания и удали их.

Возможно или не поддерживается?

РЕДАКТИРОВАТЬ: @CheGueVerra: Да, хороший обходной путь.

Знаете ли вы (для дополнительного кредита :)), почему это невозможно?

Ответы [ 2 ]

20 голосов
/ 11 ноября 2008

Нет прямого способа изменить имя роли в поставщике членства.

Я получу список пользователей, которые находятся в роли, которую вы хотите переименовать, затем удалите их из списка, удалите роль, создайте роль с новым именем и затем добавьте найденных ранее пользователей в роль с помощью новое имя.

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), поможет вам обеспечить применение ценных бумаг БР, которые применяются для пользователя и ролей, в которых он находится. Если вы можете изменить имена ролей на лету, как вы собираетесь проверить, что пользователь действительно находится в этой роли. Ну, вот что я поняла, когда спросила об этом.

rtpHarry edit: преобразованный образец псевдокода в компилируемый метод c #

5 голосов
/ 11 ноября 2008

Переименование роли в модели членства ASP.NET программно было бы плохой вещью & trade;, поскольку имена ролей используются в файле конфигурации для определения разрешений. Если бы существовал программный способ изменить имя роли (при этом изменение сохранялось в базе данных), вы бы немедленно сломали любые конфигурации безопасности на основе ролей в web.config для любых веб-приложений, использующих базу данных, и не было бы никакого способа чтобы гарантировать, что одно веб-приложение может изменять конфигурацию каждого веб-приложения, использующего эту базу данных членства.

...