133 из 153 человек нашли это полезным Когда создаётся идентичность, она может принадлежать одной или нескольким ролям, например, Трейси может принадлежать ролям администратора и пользователя, а Скотт — только пользовательской роли. То, как эти роли создаются и управляются, зависит от резервного хранилища процесса авторизации. Роли доступны застройщику через свойство IsInRole в классе ClaimsPrincipal.
Новая идентичность может принадлежать одной или нескольким ролям, например, Трейси может принадлежать ролям администратора и пользователя, а Скотт — только пользовательской роли. То, как эти роли создаются и управляются, зависит от того, как хранится процесс авторизации. Метод IsInRole класса ClaimsPrincipal даёт разработчикам понять, как использовать эту роль.
Добавление проверок ролей Добавление валидации ролей
Проверки авторизации на основе роли являются декларативными — разработчик встраивает их в свой код, в зависимости от контроллера или действия внутри контроллера, указывая роли, которые должен быть выполнен текущим пользователем Будьте членом для доступа к запрашиваемому ресурсу.
Аутентификация на основе ролей основана на заявках, которую разработчики встраивают в свой код, назначая роли контроллеру или методы внутри него, указывая, что пользователи в запросе должны соответствовать соответствующим требованиям членства.
Например, следующий код ограничивает доступ к любым действиям на AdministrationController пользователями, являющимися членами группы администраторов.
Например, следующий код ограничивает использование любого метода в AdministrationController только для членства в группе администраторов.
Вы можете указывать несколько ролей в виде списка с разделёнными запятами;
Вы можете добавить несколько назначенных ролей в список с разделением запятой:
Этот контроллер будет доступен только пользователям, являющимся членами роли HRManager или Финансового отдела.
Контролёр будет доступен только для членов роли HRManager или финансового отдела.
Если применять несколько атрибутов, то пользователь, обращающийся к нему, должен быть членом всех указанных ролей; следующий пример требует, чтобы пользователь был членом как роли PowerUser, так и ControlPanelUser.
Если вы используете несколько атрибутов, пользователь доступа должен быть членом всех ролей; В следующем примере пользователь должен быть членом ролей PowerUser и ControlPanelUser.
Вы можете дополнительно ограничить доступ, применяя дополнительные атрибуты авторизации роли на уровне действия;
Вы можете использовать дополнительные атрибуты авторизации роли на уровне метода для применения дополнительных ограничений использования;
В предыдущем коде фрагменты роли администратора или PowerUser могут получить доступ к контроллеру и действию SetTime, но только члены роли администратора могут получить доступ к Действие ShutDown.
В предыдущем фрагменте кода члены ролей Администратора или PowerUser могут использовать методы контроллера и SetTime, но только члены роли администратора могут использовать метод ShutDown.
Вы также можете заблокировать контроллер, но предоставить анонимный, неаутентифицированный доступ к отдельным действиям.
Вы также можете заблокировать контроллер, но разрешить анонимным пользователям использовать отдельные методы без разрешения.
Проверки ролей на основе политики Проверки ролей на основе политики
Требования к ролям также могут быть выражены с помощью нового синтаксиса Policy, когда разработчик регистрирует политику при запуске в рамках конфигурации сервиса Authorization. Обычно это происходит в ConfigureServices() в вашем Startup.cs файле.
Роли также можно реализовать с помощью нового синтаксиса политики, когда разработчики регистрируют политику как часть конфигурации сервиса авторизации при запуске. Обычно это добавляется в ConfigureServices() файла Sartup.cs.
Политики применяются с помощью свойства Policy на атрибуте AuthorizeAttribute;
Реализуйте политику, используя свойство Policy поверх свойства AuthorizeAttribute.
Если вы хотите указать несколько разрешённых ролей в требовании, вы можете указать их как параметры метода RequireRole;
Если вы хотите указать несколько ролей в запросе, вы можете указать их как несколько параметров метода RequireRole:
его пример уполномочивает пользователей, принадлежащих к ролям Администратора, Усиленного пользователя или Администратора резервного копирования.
Авторизованный пользователь в этом примере будет принадлежать ролям администратора, PowerUser или BackupAdministrator.
Переведён из:Вход по гиперссылке виден. |