gpt4 book ai didi

asp.net-mvc - asp.net MVC 3 将 AuthorizeAttribute 应用于区域

转载 作者:行者123 更新时间:2023-12-04 16:01:42 24 4
gpt4 key购买 nike

我目前正在编写一个 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);
}

有谁知道如何获取我的应用程序的所有区域,以便我可以循环遍历它们,而不是对每个区域进行硬编码?

或者,如果有人对如何按区域进行授权有更好的想法,那将不胜感激。

谢谢你的帮助

最佳答案

您可以为每个区域制作一个基本 Controller ,并将授权属性放在基类上。这样您就可以为每个区域的基本 Controller 传递区域参数。

关于asp.net-mvc - asp.net MVC 3 将 AuthorizeAttribute 应用于区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6016892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com