Я использую членство в ASP.NET и заметил, что в Класс ролей нет метода для модифицировать роли (например, ее имени), только для их создания и удаления.
Это возможно или не поддерживается?
Обновлено: @CheGueVerra: Да, хорошее решение.
Вы знаете (за дополнительную плату :)), почему это невозможно?

Программное переименование роли в модели членства ASP.NET было бы Плохой вещью ™, потому что имена ролей используются в файле конфигурации для определения разрешений. Если бы существовал программный способ изменения имени роли (который сохранял изменение в базе данных), вы бы немедленно нарушили любые конфигурации безопасности на основе ролей в web.config для любых веб-приложений, использующих базу данных, и не было бы возможности чтобы гарантировать, что одно веб-приложение может изменять конфигурацию каждого веб-приложения, использующего эту базу данных членства.
правда, но я не планирую использовать файл конфигурации, так как мои пользователи могут создавать новые роли, и они могут настраивать через приложение, к каким страницам будут иметь доступ новые роли. Мне нужно добавить проверку времени выполнения, поэтому в этом ограничении нет необходимости
И не произойдет ли то же самое, если вы удалите роль?
Нет прямого способа изменить имя роли в поставщике членства.
Я бы получил список пользователей, которые находятся в роли, которую вы хотите переименовать, затем удалил их из списка, удалил роль, создал роль с новым именем, а затем добавил пользователей, найденных ранее, в роль с новым именем.
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 edit: преобразованный образец псевдокода в компилируемый метод C#
Почему это невозможно: не в базовом классе [общедоступный абстрактный класс RoleProvider: ProviderBase] Почему они решили не реализовывать его, я пока не знаю;) Я позволю вам задать вопрос