В настоящее время я пишу сайт Admin MVC 3, и каждый пользователь имеет доступ только к определенным частям сайта.
Области моего сайта совпадают с ролями пользователя, поэтому я хотел бы поместить атрибут AuthorizeAttribute в каждую область, используя имя области в качестве параметра в роли.
Пока у меня это работает, когда я жестко кодирую проверку каждой области, но я хотел бы просто пройтись по всем областям и применить фильтр авторизации.
(Я использую это как мой собственный FilterProvider - http://www.dotnetcurry.com/ShowArticle.aspx?ID=578)
Мой код (пока "Gcm" является одной из моих областей, а также ролью):
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
// for all controllers, run AdminAuthorizeAttribute to make sure they're at least logged in
filters.Add(ObjectFactory.GetInstance<AdminAuthorizeAttribute>());
AdminAuthorizeAttribute gcmAuthroizeAttribute = ObjectFactory.GetInstance<AdminAuthorizeAttribute>();
gcmAuthroizeAttribute.Roles = "Gcm";
var provider = new FilterProvider();
provider.Add(
x =>
x.RouteData.DataTokens["area"] != null && x.RouteData.DataTokens["area"].ToString() == "Gcm"
? gcmAuthroizeAttribute
: null);
FilterProviders.Providers.Add(provider);
}
Кто-нибудь знает, как получить все области моего приложения, чтобы я мог просто проходить через них, а не жестко кодировать каждую область?
Или, если у кого-то есть лучшее представление о том, как авторизоваться в каждой области, это будет оценено.
Спасибо за вашу помощь
Saan