2012-01-27 2 views
2

Я создаю приложение интрасети ASP.NET MVC3 с Проверка подлинности Windows. Я хочу, чтобы пользователи домена использовали это приложение. Как только пользователь домена аутентифицируется (с Active Directory), я планирую создавать пользователей (с именем пользователя AD), Роли & Таблицы UserRoles в SQL Server для авторизации.Как использовать настраиваемую авторизацию на основе ролей с помощью проверки подлинности Windows в ASP.NET MVC3?

Так что, если пользователь является частью роли, имеющей некоторый набор разрешений (для доступа к контроллерам/действиям), я должен разрешать только пользователям в этой роли выполнять/просматривать их.

Например: если есть действие/Места/Создать, роли, которым разрешено выполнять это, могут только это сделать.

Может ли кто-нибудь дать мне несколько указателей? Должен ли я создать настраиваемый фильтр действий и использовать атрибут фильтра для любого метода действий, к которому я хочу применить фильтр?

ответ

0

Чтобы ограничить доступ к представлению ASP.NET MVC, вы ограничиваете доступ к методу действий , который отображает представление. Для этого структура MVC предоставляет класс AuthorizeAttribute.

Пример:

[Authorize(Roles = "Admin, Super User")] 
public ActionResult AdministratorsOnly() 
{ 
return View(); 
} 

См here для более подробной информации.

Обратите внимание, что использование атрибута [Авторизовать] требует использования какого-либо поставщика членства.

+0

Спасибо @autonomatt. Поскольку я предпочитаю использовать собственную структуру таблиц для «Пользователи/Роли» в SQL Server, а не для членства, ролей и профиля ASP.NET, должен ли я реализовать пользовательский поставщик членства? Является ли [this] (http://msdn.microsoft.com/en-us/library/f1kyba5e%28v=vs.100%29.aspx) статьей хорошим способом? –

+1

Вот что я сделал. При исследовании я столкнулся с множеством сообщений, которые говорят то же самое. Использование структуры таблицы MS не рекомендуется. Главным образом из-за того, как он хранит определенные данные, что очень затрудняет запрос. Я использую NHibernate на моем уровне доступа к данным и создал пользовательский поставщик членства NHibernate. [Эта статья] (http://www.codeproject.com/Articles/55174/Custom-Fluent-Nhibernate-Membership-and-Role-Provi) помогла мне. И [эта статья Маурисио Схеффера] (http://bugsquash.blogspot.com/2010/11/windsor-managed-membershipproviders.html) несколько связана, если вы хотите использовать IoC. – autonomatt

+0

Спасибо @autonomatt –

Смежные вопросы