Asp.net mvc 3 控制器和操作的集中授权(ASP.NET MVC 3)

Asp.net mvc 3 控制器和操作的集中授权(ASP.NET MVC 3),asp.net-mvc-3,security,authorize-attribute,Asp.net Mvc 3,Security,Authorize Attribute,在自定义AuthorizeAttibute(在全球注册)中,是否存在任何可能的安全问题或陷阱,以便根据所调用的控制器类型和操作应用授权 e、 g.(非真实代码) 主要问题是授权缓存-因此有几件事需要知道。查看我在此处发布的链接: 查看现有属性的代码,以及它如何处理缓存,以确保不会引起与基本属性相同的问题。因此,如果我从AuthorizeAttrbute继承并调用base.OnAuthorized,会怎么样?我还需要担心缓存问题吗?(现在我只是重写OnAuthorized来获取Authoriza

在自定义AuthorizeAttibute(在全球注册)中,是否存在任何可能的安全问题或陷阱,以便根据所调用的控制器类型和操作应用授权

e、 g.(非真实代码)


主要问题是授权缓存-因此有几件事需要知道。查看我在此处发布的链接:


查看现有属性的代码,以及它如何处理缓存,以确保不会引起与基本属性相同的问题。

因此,如果我从AuthorizeAttrbute继承并调用base.OnAuthorized,会怎么样?我还需要担心缓存问题吗?(现在我只是重写OnAuthorized来获取AuthorizationContext。我不知道如何在AuthorizationCore中获取AuthorizationContext,因为它传递了一个HttpContextBase)这里有一个有趣的片段(请参阅缓存部分):您是否使用自己的OnAuthorization?如果是这样的话,那么请注意它们在这里做了什么我不是在写我自己的,而是从默认的AuthorizeAttrbute属性继承。因此,似乎通过调用base.OnAuthorized,我得到了缓存攻击(看起来该攻击是核心AuthorizeAttrbute类的一部分)。看起来我很安全。除非你还有什么要补充的,谢谢你的回答
string controllerFullName=_filterContext.ActionDescriptor.ControllerDescriptor.ControllerType.FullName;

string minRequiredRole = GetControllerMinRequiredRole(controllerFullName);

if(User.MeetsRoleRequirement(minRequiredRole))
{
     //give access
}
else
{
    //no you're not allowed
}