Как я могу позволить пользователю назначать разные функции сайта разным ролям в поставщике ролей asp.net? - PullRequest
0 голосов
/ 15 февраля 2009

Я спорю о том, писать свой собственный класс аутентификации или нет. Это почти сделано, но я думаю, что может быть лучше использовать поставщика ролей (либо пользовательского, либо стандартного). Я знаю, что вы можете назначать пользователей ролям, а затем отображать информацию для пользователя на основе текущей роли. Но что, если вы хотите назначить разрешение на основе задачи? Например, скажем, иногда я хочу, чтобы роль редактора могла изменять посты других людей, а иногда нет. Это простая ситуация, но я хотел бы иметь более тонкий уровень авторизации вместо тонны ролей (редактор, редактор всех публикаций и т. Д.). Возможно ли это с помощью специального поставщика ролей asp.net, или мне просто продолжить доработку собственной системы?

Ответы [ 2 ]

2 голосов
/ 27 августа 2009

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

Вам нужно найти / написать поставщика ролей , который поддерживает иерархии - я бы рекомендовал этот маршрут из-за чего-то совершенно другого, поскольку вы получите от него некоторые преимущества, такие как другие аспекты платформы, которые работать с этими провайдерами (контроль входа в систему, настройки конфигурации для авторизации / доступа и т. д.).

На самом деле вы хотите что-то вроде:

  • Роль пользователя - может публиковать сообщения на форуме, может редактировать свои собственные сообщения.
  • Роль редактора - может делать все, что может пользователь, и может редактировать другие сообщения.
  • Роль администратора - может делать все, что может редактор, и другие административные функции.

То есть, если пользователь находится в роли редактора, ему автоматически предоставляются права пользователя и т. Д.

Тогда вы можете выбрать:

  1. Дублируйте эти роли для каждого форума, назначайте им пользователей и т. Д.
  2. Добавьте несколько свойств в свои профили пользователей, скажем "ForumEdit" и "ForumAdmin", и сохраните список форумов, которые они могут редактировать / администрировать там.

Преимущество (1) состоит в том, что вам нужно сделать только одну проверку, чтобы увидеть, может ли пользователь выполнять задачи администрирования / редактирования, но у вас больше затрат на управление всеми этими ролями.

Преимущество (2) состоит в том, что ролями легко управлять, вы можете удалить пользователя из группы редакторов, и он, например, потеряет все права редактора, но у вас есть более высокая стоимость, чтобы определить, являются ли они на самом деле редактор для этого форума, так как вам нужно запросить их профиль.

Подобный ответ на этот здесь действительно .

0 голосов
/ 16 февраля 2009

Я не совсем уверен, что вы имеете в виду, если вы можете уточнить:

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

Вы можете назначить несколько ролей пользователям. Так что у меня была бы базовая роль, потом постепенно добавляю функциональность

Редактор Модератор Администратор И т.д.

И пользователь может принадлежать всем трем.

...