В настоящее время я пишу сайт 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);
}
Кто-нибудь знает, как получить все области моего приложения, чтобы я мог просто прокручивать их, а не жестко кодировать каждую область?
Или, если у кого-то есть лучшее представление о том, как авторизовать для каждой области, это было бы признательно.
Спасибо за помощь, Саан