为区域注册过滤器

2024-02-11

有没有办法为特定区域注册过滤器?

例如下面的代码全局注册授权过滤器(强制进行身份验证):

services.AddMvc(config =>
{
    var policy = new AuthorizationPolicyBuilder()
                     .RequireAuthenticatedUser()
                     .Build();
    config.Filters.Add(new AuthorizeFilter(policy));
});

我想要这个,但仅限于某些地区。


你可以写一个自定义的IFilterProvider它可以动态创建过滤器。

Example:

public class CustomFilterProvider : IFilterProvider
{
    public int Order
    {
        get
        {
            // This value is fine. The `DefaultFilterProvider` has an order of `-1000` and so is run before this provider.
            return 0;
        }
    }

    public void OnProvidersExecuted(FilterProviderContext context)
    {
    }

    public void OnProvidersExecuting(FilterProviderContext context)
    {
        var controllerActionDescriptor = context.ActionContext.ActionDescriptor as ControllerActionDescriptor;
        var controllerType = controllerActionDescriptor.ControllerTypeInfo;

        var areaAttribute = controllerType.GetCustomAttribute<AreaAttribute>();
        if(areaAttribute != null && areaAttribute.RouteValue == "Admin")
        {
            var filter = new TestAuthorizationFilter();
            context.Results.Add(new FilterItem(new FilterDescriptor(filter, FilterScope.Global), filter));
        }
    }
}

在 DI 中注册提供者:

services.TryAddEnumerable(ServiceDescriptor.Singleton<IFilterProvider, CustomFilterProvider>());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为区域注册过滤器 的相关文章

随机推荐

  • 如何将mysql数据库中的表导出到excel?

    我在 mysql 中有一个表 该表非常大 有超过 100k 行 我想将其导出到 Excel 但是 我尝试了 phpmyadmin 上的导出到 excel 功能 但转储 excel 文件需要很长时间 这甚至不是倾销 错误始终是 连接已重置 有
  • 是否有基于终端及其祖先映射递归数据类型的名称?

    假设我有一个如下所示的类型 data Term a Terminal a Application Term a Term a Abstraction String Term a 现在 我想绘制地图Term a to Term b 理想情况下
  • 如何在 Emacs 中检查 Python 代码的语法而不实际执行它?

    Python 的 IDLE 有 检查模块 Alt X 来检查语法 无需运行代码即可调用该语法 在 Emacs 中是否有等效的方法来执行此操作 而不是运行和执行代码 python m py compile script py
  • Java N/IO 中的行分隔符?

    使用以下命令写入 txt 文件时如何插入新行java nio file 以下代码生成一个只有一行的txt文件ABCDEF 而不是两条单独的线ABC and DEF public static void main String args th
  • Python Spark从数据框中提取字符

    我在 Spark 中有一个数据框 如下所示 ID Column 1 STRINGOFLETTERS 2 SOMEOTHERCHARACTERS 3 ANOTHERSTRING 4 EXAMPLEEXAMPLE 我想做的是从列中提取前 5 个
  • 通过虚拟盒提供的 ember-cli 违反了内容安全策略

    我有一个新鲜的ember cli v 0 1 2应用 我在虚拟框中提供 ember 并通过仅主机配置的网络适配器从主机访问网页 地址为192 168 56 102 当我跑步时ember serve从虚拟盒子中访问192 168 56 102
  • Grabwidget 即使放大也能获取完整视图

    我在用QPixmap QPixmap grabWidget QWidget widget int x 0 int y 0 int width 1 int height 1 抓住视口QPixmap object 在某些情况下 即使屏幕放大到一
  • 为什么如果类的成员是引用,则复制对象是非法的?

    我遇到一个测验 指出下面第 18 行中的代码格式不正确 因为 当需要复制的成员之一是引用时 使用隐式定义的赋值运算符是格式不正确的 我无法理解这一点 为什么无法复制引用 为什么16号线是合法的 第 16 行与第 18 行非常相似 复制构造函
  • Socket.io 中的身份验证

    我将尝试验证 socket io 上的连接 目前 用户首先通过 REST API 进行身份验证 然后 我向用户发送JsonWebToken与经过身份验证的用户的用户名 打开客户端和服务器之间的连接后 我的计划是暂时从已连接套接字列表中删除该
  • GEKKO:不响应约束也不求解 obj 函数

    以下是与这个问题相关的内容 使用 Gekko 的 MPC 和 ARX 模型 https stackoverflow com questions 63727310 mpc with arx model using gekko 63731362
  • WPF 中的多行组合框

    我试图找到 WPF 的多行用户可编辑组合框的示例 我们已经使用自定义模板尝试了各种方法 但无法使其工作 我们试图解决的具体问题是在下拉列表中显示地址列表 用户可以同时输入新地址 在组合框中输入内容没有问题 但多行却让我们丧命 如果我们想在
  • 如何绘制不在道路上的路线,MKMapView

    所以我一直在尝试使用 MKMapView 和叠加层来创建 不在道路上的道路 这可能听起来很奇怪 但我想做的是 在我的 iOS 应用程序中 我想绘制特定酒店提供的短途旅行路线 但是到目前为止我发现的所有帖子都集中在现有道路上 因为短途旅行会经
  • “外部 IP 地址”和“公共 IP 地址”这两个术语是同义词吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 外部IP地址与公共IP地址以及内部I
  • 使用 for in 循环使类可迭代?

    我有一个自定义类 class MyArrayClass 该类是一个自定义列表实现 我想做以下事情 var arr MyArrayClass MyArrayClass arr append first arr append second ar
  • 解释图像的`srcset`中的`w`

    据我了解 srcset用于根据以下内容确定要加载的图像dpi设备的 我在 Google Web Fundamentals 上看到了这个例子 它似乎使用了w单位连同vw单位恰好是视口宽度的 1 img src lighthouse 200 j
  • Eclipse IDE 中的 C++ 错误“nullptr 未在此范围内声明”

    我正在运行 Eclipse Helios 并且安装了 g 4 6 希望我没有错 g 4 6 实现了 C 11 功能 我创建了一个使用 nullptr 和 auto 关键字的 C 项目 构建出现以下错误 filename cpp 13 13
  • 如何在 Brackets 中设置 jslint ES6 指令?

    我收到此错误 需要一个标识符 但看到的是 const 我正在使用括号文本编辑器 我找到了这个答案 您需要指定 es6 指令 请参阅 JSLint 帮助 但我不知道如何在括号中指定 es6 指令 这是我的代码 const singleQuot
  • 如何在 Java 中启用客户端 TLS 会话重用 [重复]

    这个问题在这里已经有答案了 我有一个 Java 客户端 它可能会创建到同一服务器的多个会话 TLS 协议具有缓存会话密钥的功能 从而避免对每个连接进行昂贵的 PKI 处理 但我无法让它真正发挥作用 openssl s client reco
  • 如何在 C++ 中从 UTexture2D 读取数据

    我正在尝试从虚幻引擎 C 项目中填充的 UTexture2D 读取像素数据 在我在这里发布问题之前 我尝试使用此链接中描述的方法 https answers unrealengine com questions 25594 accessin
  • 为区域注册过滤器

    有没有办法为特定区域注册过滤器 例如下面的代码全局注册授权过滤器 强制进行身份验证 services AddMvc config gt var policy new AuthorizationPolicyBuilder RequireAut