В каком коде проверяются роли с атрибутом [Authorize] с использованием настраиваемых поставщиков хранилища для удостоверений? - PullRequest
0 голосов
/ 13 июля 2020

Раньше я задавал аналогичный вопрос , но не получил ответа, который помог бы мне понять, как работают настраиваемые поставщики хранилищ для ASP. NET Core Identity , поэтому Я попытаюсь задать вопрос по-другому.

Предполагая, что у меня есть собственный поставщик хранилища, реализованный для ASP. NET Core 2.2, какой код в моей реализации позволит [Authorize] атрибут, чтобы проверить, есть ли у пользователя роль? Например, если у действия есть [Authorize (Role = "Manager")], какой код входит в мой пользовательский tblRoles в базе данных на основе значения "Manager" в атрибуте?

Для ясности, я не запрашивая специфику c logi c, которая обращается к базе данных и проверяет, есть ли у пользователя роль. Я спрашиваю, где будет этот logi c?

Мне кажется, что он будет в классе CustomRoleStore, но методы там никогда не выполняются, если я не вызываю их явно. А если мне нужно их явно вызывать, то зачем мне CustomRoleStore? С таким же успехом я мог бы просто создать свой собственный сервис, который обрабатывает авторизацию пользователя для каждого действия и не усложняет мой код с помощью Identity.

Извините, что этот вопрос повсюду, но я чувствую, что упускаю некоторые ключевые моменты о том, как Identity обрабатывает авторизацию, и трудно понять, о чем конкретно просить, чтобы понять.

1 Ответ

0 голосов
/ 15 июля 2020

Я провел больше исследований и нашел отличную серию руководств: https://www.youtube.com/watch?v=Fhfvbl_KbWo&list=PLOeFnOV9YBa7dnrjpOG6lMpcyd7Wn7E8V

В 4-м видео на 20:13 , Role в Объясняется атрибут [Authorize]. Атрибут [Authorize] использует значение роли и просто сравнивает его с заявлением о роли удостоверения.

Насколько я понимаю, это действительно так, и реализация настраиваемых поставщиков хранилища напрямую с этим не связана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...