c# – 如何在控制器和操作级别使用Authorize属性?

我已经实现了自己的自定义Authorize属性.

属性既适用于控制器级别,也适用于操作级别.

这是我需要做一个例子:

[ClaimsAuthorize(Roles = "AdvancedUsers")]
public class SecurityController : Controller
{
    [ClaimsAuthorize(Roles = "Administrators")]
    public ActionResult AdministrativeTask()
    {
        return View();
    }

    public ActionResult SomeOtherAction()
    {
        return View();
    }
}

目前,如果用户具有管理员角色但不具有AdvancedUsers角色,则他无法执行“管理任务”.

即使用户未在控制器级别授权,如何更改此行为以在操作级别执行安全检查?

目前,我能想到的唯一解决方案是实现2个属性一个用于保护控制器,另一个用于保护操作.然后我将使用Order属性首先在动作级别执行一个.

但是,如果可能的话,我更喜欢具有单个属性解决方案.

解决方法

这不应该是可能的.想象一下MVC与授权过滤器一起使用的逻辑.

>确定控制器后 – 检查是否存在适用于该控制器的授权过滤器并执行该过滤器.
>当操作已知时 – 对操作执行相同操作.

在所有情况下,授权失败都会使管道短路.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...