【问题标题】:Implementing IAutorizationFilter in ASP.NET MVC 4在 ASP.NET MVC 4 中实现 IAutorizationFilter
【发布时间】:2014-02-26 16:25:43
【问题描述】:

我正在尝试基于IAuthorizationFilterASP.NET MVC 4 上构建过滤器,以限制对某些控制器的访问。

这个想法是,如果网络应用程序的最终用户具有适当的权限,则允许其访问,在其他情况下则不允许。

所以我在最后尝试,根据User.Identity.Name 获得它的 BOOL 权限,然后检查他是否有权。

我是否需要实现与拥有 BOOL 权限一样多的过滤器,还是只有一个过滤器可以完成这项工作? 我该如何实施?请问有什么好主意吗?

【问题讨论】:

    标签: c# asp.net asp.net-mvc-4 filter


    【解决方案1】:

    不,您不必这样做。如何确定每个用户的权限可以在OnAuthorization 中完成,也可以重构为单独的静态方法并在OnAuthorization 中调用。

    但是,当您对Action 方法或Controller 使用自定义授权属性时,您应该可以说只有具有Create 权限的用户才能访问Action 或具有@ 权限的用户987654329@权限可以访问这个controller。请看这篇博文。

    http://codeutil.wordpress.com/2013/05/14/forms-authentication-in-asp-net-mvc-4/#mvc-implement-custom-authorization-filter

    你会注意到定义了两个变量

    public int StartTime { get; set; }
    public int EndTime { get; set; }
    

    相反,您可以使用

    public bool AllowRead {get;set;}
    public bool AllowWrite {get;set;}
    

    然后按如下方式使用authorize属性

    [HttpPost]
    [CustomAuthorize(AllowRead = false, AllowWrite = true)]
    public ActionResult Create(Model model)
    {
        //your code
    }
    

    以上只是一种方法。另一种方法是使用枚举标志。请看一下这个答案。

    How could I use my own database table for MVC 4 user control (and authorizing with boolean fields in role table)?

    【讨论】:

    • 感谢您的回复。权限存储在与成员资格表相关的表(类)中。因此,我正在尝试获取当前登录用户的权限并检查他/她是否有权执行控制器操作。权限允许利用控制器的所有方法。
    猜你喜欢
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多