СИТУАЦИЯ
У меня есть база данных, в которой у меня есть имена пользователей и связанные с ними разрешения, а также код, который работает с ним. Думайте об этом как о чёрном ящике, который дает мне права пользователя как Enumerable
из enum
значений, когда я предоставляю имя пользователя. Мне нужно его использовать.
У меня также есть ASP. NET Core 3.1 MVC веб-приложение , которое должно использовать Windows аутентификация и Настраиваемая авторизация на основе этих разрешений.
Я хочу хранить эти разрешения в течение минуты (или десяти), потому что сеть ненадежна, и запрос разрешений пользователя каждый раз занимает много времени и они не так часто меняются. Я ничего не могу поделать со скоростью, мне приходится с ней работать.
У меня есть реализации AuthorizeAttribute
, в которых я указываю список разрешений (значений перечисления), которые пользователь должен получить для доступа к действие в контроллере.
Чтобы быть более точным c У меня есть более старая . net framework asp. net MVC application где я go вокруг эту проблему, имея свой собственный принципал с моим списком разрешений и сохраняя этот принципал в куке ie.
Я медленно изучаю ядро asp. net, и когда я начал читать об авторизации и аутентификации в нем, этого было достаточно, чтобы заставить мою голову кружиться от информационной перегрузки.
РЕЗЮМЕ
У меня есть список разрешений пользователей, которые мне нужно хранить в течение некоторого времени, и я не знаю что нужно сделать, чтобы моя собственная пользовательская авторизация прошла.
То, что у меня есть, вероятно, не будет работать для меня в приложении ASP. NET core MVC и не может найти жизнеспособный вариант, прежде чем закончить загружен множеством доступных опций.
Мне нужен пу sh в правильном направлении, написанном простым языком (для идиота), в направлении, чтобы посмотреть, чтобы мой работа над требованиями.
СОВРЕМЕННОЕ (НЕ ИДЕАЛЬНОЕ) РЕШЕНИЕ В ASP. NET РАМКА MVC
Пример того, как в настоящее время как-то работает. net framework asp. net mvc, но, вероятно, далеко от идеала:
в global.asax
переопределить WindowsAuthentication_onAuthenticate
, где я проверяю, есть ли повар ie с данные пользователя и пользователь аутентифицирован.
Если пользователь прошел проверку подлинности, но повара нет ie, создайте принципала (содержащего разрешения пользователя), сериализуйте и зашифруйте его до FormsAuthenticationTicket
для повара ie.
в Application_PostAuthenticateRequest
получить данные из зашифрованного кода ie и установить их в HttpContext.Current.User
в качестве принципала.
Тогда атрибут авторизации просто собираюсь взять массив указанных разрешений и проверить HttpContext.Current.User
, есть ли у пользователя их.
Может кто-нибудь порекомендовать мне, как сузить мой поиск для жизнеспособного решения ( или жизнеспособное решение)?