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