首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于授权的ActionFilterAttribute

用于授权的ActionFilterAttribute
EN

Stack Overflow用户
提问于 2012-09-28 07:05:19
回答 1查看 2.5K关注 0票数 4

我需要在我的应用程序中实现一些授权机制。授权是基于对象的,这些对象从客户端发送到服务器。控制器中的每个操作都作为一个参数列表。根据此列表中对象的嵌套属性,我必须授予或拒绝对控制器操作的访问权限。我的第一种方法是使用自定义筛选器属性

代码语言:javascript
复制
public class CustomAuthAttribute : FilterAttribute,IAuthorizationFilter
{
    public void OnAuthorization(AuthorizationContext filterContext)
    {
        //SOME LOGIC HERE
    }
}

但是,由于请求是json请求,所以我很难获得已发送对象的每个相关属性的值(我只能访问json值)。这就是为什么我认为我可以使用ActionFilterAttribute而不是FilterAttribute。

代码语言:javascript
复制
 public class ActionFilterAuthorization: ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {

        var castedList = filterContext.ActionParameters["key"] as List<MyObject>;
        //logic here 

       //throw exception is access is not granted

    }
}

问题是这是否是授权的好解决方案?也许检查操作内部的授权会更好??

EN

回答 1

Stack Overflow用户

发布于 2012-09-28 07:49:29

安全性是一个cross cutting concern,所以过滤器和属性是它的理想位置。在每次操作中都必须手动检查它,这将添加许多必须维护的额外代码,并且如果忘记它,还会增加安全风险。将其设置为全局筛选器将意味着它将始终被应用,这意味着您可以编写一个属性,如果操作/控制器不需要它,您可以编写一个属性,例如AllowAnnoymous等enter link description here

我找到的关于MVC3安全性的最好的通用文章是this one http://www.codeproject.com/Articles/288631/Secure-ASP-NET-MVC3-applications

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12631325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档