0

Хранение/назначение ролей аутентифицированных пользователей

14

Я обновляю сайт, чтобы использовать MVC, и ищу лучший способ настроить аутентификацию.

На данный момент у меня работает вход в систему через Active Directory: я валидирую имя пользователя и пароль, а затем устанавливаю Auth cookie.

Как мне сохранить информацию о ролях пользователя во время входа, чтобы мои контроллеры могли видеть эти роли, когда пользователь перемещается по сайту?

[Authorize(Roles = "admin")]

У меня нет проблем с получением списка ролей из Active Directory. Я просто не знаю, куда их поместить, чтобы контроллеры могли их видеть.

3 ответ(ов)

0

Для тех, кто использует MVC 4 или выше, вам стоит учесть совет Ярослава Валижко при использовании ответа Давида Глена:

«Я протестировал это в ASP.NET MVC 4 и рекомендую использовать метод Application_PostAuthenticateRequest. В противном случае общий принцип будет переопределён.» – Ярослав Валижко, 7 сентября в 16:18

Как уже сказано выше, всё, что вам нужно сделать, — это заменить имя метода Application_AuthenticateRequest на Application_PostAuthenticateRequest, чтобы это сработало. У меня заработало безупречно! Если бы у меня была возможность проголосовать за Ярослава и Давида, я бы это сделал.

0

Когда вы аутентифицируете пользователя, создайте новый экземпляр GenericPrincipal. Конструктор принимает массив строк, который представляет роли пользователя. Затем установите HttpContext.Current.User равным этому общему принципалу и создайте аутентификационный куки — этого должно быть достаточно.

0

Я бы посоветовал создать собственный провайдер ролей. Вот пример, который может помочь вам с этим:

http://www.danharman.net/2011/06/23/asp-net-mvc-3-custom-membership-provider-with-repository-injection/

В этом руководстве вы найдете информацию о том, как реализовать пользовательский провайдер ролей в ASP.NET MVC 3 с использованием инъекции репозитория. Это даст вам гибкость и возможность настроить функциональность под ваши конкретные требования.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь