我正在编写一个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