gpt4 book ai didi

c# - 判断 Controller 是否在一个区域中

转载 作者:行者123 更新时间:2023-11-30 12:22:12 29 4
gpt4 key购买 nike

有没有办法检查调用方法的Controller是否来自Area内的Controller?

例如,我有一个继承自 AuthorizeAttribute 的类,例如

public class CustomAuthorize: System.Web.Mvc.AuthorizeAttribute
{
public CustomAuthorize()
{
...
}

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// TODO - Check if the controller is from an Area
}
}

然后我有一些 Controller Action ,这些 Action 装饰有相关角色(以及一些其他自定义属性),例如

[CustomAuthorize(Roles ="Administrator")]
[HttpGet]
public virtual ActionResult Index()
{
...
}

在上面的 TODO 部分,我想看看 Controller 是否是我的某个区域中的 Controller 之一。我知道我在某个区域中的 Controller 将位于 ProjectName.Areas.xxx.Controllers 命名空间中(其中 xxx 是区域名称),而那些不在其中的 Controller 将位于 ProjectName.Controllers 命名空间中。

是否有某种方法(也许使用反射?)可以从上面的 AuthorizeCore 函数中计算出特定区域(或它来自的命名空间),以便我可以实现一些自定义功能?

最佳答案

您可以从 RouteData.DataTokens 获取它:

httpContext.Request.RequestContext.RouteData.DataTokens["area"]

如果您的 Controller 不在某个区域,则返回 null;如果您的 Controller 在某个区域,则返回该区域的名称。

关于c# - 判断 Controller 是否在一个区域中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41875036/

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