Существует множество вопросов (и информации) о настройке членства asp.net, поставщиков ролей и т.п. Независимо от того, следует ли использовать встроенную платформу, предоставляемую Microsoft, или роль, расширяйте базовые классы и свою роль.
Я решил расширить поставщиков по умолчанию и реализовать свои собственные поставщики членства и роли. Теперь мой вопрос, в частности, касается проверки подлинности роли.
Традиционно вы создавали бы роли, например, "Менеджер", "Администратор", "Сотрудник", "Суперпользователь" ) или все, что у вас есть. Но что делать/делать в отношении разрешений, которые я считаю более тонким контролем? Позвольте мне уточнить....
В моем сайте asp.net mvc у меня есть разные области, такие как администрирование, управление, обмен сообщениями, отчетность и т.д. Я бы создал роли для каждого из них, такие как "Администратор", "Менеджер", "Репортер" и т.д. Без соответствующей роли, вы не сможете получить доступ к этой области сайта. Поэтому я заблокировал бы все контроллеры с этим уровнем класса.
Но теперь возьмем одну область в качестве примера; обмен сообщениями и сказать, что я хотел иметь более тонкие разрешения на зерно для CRUD; создавать сообщения, просматривать/читать сообщения, редактировать сообщения, удалять сообщения и т.д.
Наконец, мой вопрос. Как лучше всего было бы реализовать это более тонкое зерно контроля? Один из подходов, который я вижу (не уверен, что он хороший), заключается в том, чтобы просто создать роли членства asp.net для всего. Поэтому я мог бы...Messenger (роль широкого уровня), CreateMessage, ReadMessage, EditMessage, DeleteMessage.
С одной стороны, я хотел бы, чтобы некоторые пользователи могли читать/просматривать сообщения. Но не обязательно создавать или удалять их. Индивидуальные действия контроллера могут иметь конкретные роли.
Вы видите какие-либо проблемы с этим подходом? У вас есть идея?
Решение До сих пор
Я решил создать свою собственную схему и внедрить собственные поставщики членства и роли. Моя схема включает:
- Пользователь
- UserProfile
- Разрешение
- PermissionAssignment
- Роль
- RoleAssignment
Отправляйтесь на следующий день или два, но обновляйте дополнительную информацию, когда я получаю шанс.