【发布时间】:2017-01-26 13:54:09
【问题描述】:
有没有办法检查调用方法的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
}
}
然后我有一些控制器操作,这些操作用相关角色(以及一些其他自定义属性)装饰,例如
[CustomAuthorize(Roles ="Administrator")]
[HttpGet]
public virtual ActionResult Index()
{
...
}
在上面的 TODO 部分中,我想查看控制器是否是我的区域之一的控制器之一。我知道我在某个区域中的控制器将位于 ProjectName.Areas.xxx.Controllers 命名空间中(其中 xxx 是区域名称),而不在区域中的控制器将位于 ProjectName.Controllers 命名空间中。
是否有某种方法(也许使用反射?)从上面的 AuthorizeCore 函数中,我可以计算出特定区域(或它来自的命名空间),以便我可以实现一些自定义功能?
【问题讨论】:
标签: c# asp.net-mvc