asp.net MVC 3将AuthorizeAttribute应用于区域
|
我目前正在编写一个Admin MVC 3网站,每个用户只能访问该网站的某些部分。
我网站的区域与用户角色相同,因此我想做的是将AuthorizeAttribute放在每个区域上,并使用区域名称作为Role中的参数。
到目前为止,当我对每个区域的检查进行硬编码时,我已经可以使用它了,但是我只想遍历所有区域并应用Authorize过滤器。
(我将其用作我的自定义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);
}
有谁知道如何获得应用程序的所有区域,因此我可以遍历它们,而不是对每个区域进行硬编码?
或者,如果有人对如何对每个区域进行授权有更好的主意,将不胜感激。
谢谢你的帮助
萨恩
没有找到相关结果
已邀请:
3 个回复
醒荒捆府绣
良阑纠苫
码:
拟僚疽刊剔
然后,将我的自定义授权属性应用于Global.asax中的所有控制器:
感谢所有回答 萨恩