如何获取 dotnet core 3 的路由属性?

2024-01-11

我已将 dotnet core 2.2 升级到 3.preview 7。
所以在那之后,我无法获得自定义属性。
context.Resource在 2.2 版本中是类型AuthorizationFilterContext,但在版本 3 中是类型Microsoft.AspNetCore.Http.Endpoint.

现在我无法从端点获取属性。

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.Controllers;
using Microsoft.AspNetCore.Mvc.Filters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;

namespace Gamma.Core.Security
{
    public abstract class AttributeAuthorizationHandler<TRequirement,     TAttribute>
    : AuthorizationHandler<TRequirement> where TRequirement
    : IAuthorizationRequirement where TAttribute : Attribute
    {
        Microsoft.AspNetCore.Http.IHttpContextAccessor _httpContextAccessor = null;
        public AttributeAuthorizationHandler(Microsoft.AspNetCore.Http.IHttpContextAccessor httpContextAccessor)
        {
            _httpContextAccessor = httpContextAccessor;
        }
        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, TRequirement requirement)
        {
            var attributes = new List<TAttribute>();

            var action = (context.Resource as AuthorizationFilterContext)?.ActionDescriptor as ControllerActionDescriptor;
            if (context.Resource is Microsoft.AspNetCore.Http.Endpoint endpoint)
            {
                //endpoint.
            }

            if (action != null)
            {
                attributes.AddRange(GetAttributes(action.MethodInfo));
            }

            return HandleRequirementAsync(context, requirement, attributes);
        }

        protected abstract Task HandleRequirementAsync(AuthorizationHandlerContext context, TRequirement requirement, IEnumerable<TAttribute> attributes);

        private static IEnumerable<TAttribute> GetAttributes(MemberInfo memberInfo)
        {
            return memberInfo.GetCustomAttributes(typeof(TAttribute), false).Cast<TAttribute>();
        }
    }
}

我能够从 .NET Core 3.1 获取自定义属性AuthorizationHandlerContext using ControllerActionDescriptor in 布莱恩的回答 https://stackoverflow.com/a/58504298/12858798.

private IEnumerable<TAttribute> GetAttributes<TAttribute>(AuthorizationHandlerContext authContext)
{
    if (authContext.Resource is RouteEndpoint routeEndpoint)
    {
        var actionDescriptor = routeEndpoint.Metadata.OfType<ControllerActionDescriptor>().SingleOrDefault();
        var attributes = actionDescriptor?.MethodInfo.GetCustomAttributes(typeof(TAttribute), false).Cast<TAttribute>();
        return attributes;
    }
    
    return null;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取 dotnet core 3 的路由属性? 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 如何在 Pygame 中插入滑块?

    我目前正在 Python 上进行物理模拟 使用 Pygame 模拟室内的气体云 我的问题是我无法在代码中插入工作滑块来更改参数的值 我有一个运行模拟的 运行时 循环 当我想在其中插入工作滑块时 模拟就会停止 我无法让模拟和滑块同时工作 下面
  • 为什么正则语言的补语仍然是正则语言?

    根据我的教科书 只要L1是正则语言 L1 A L1的补集就是正则语言 A 不是还包括上下文无关语言 上下文相关语言和递归可枚举语言吗 A L1 也将包括所有这些 不是吗 那怎么可能有规律呢 在有限状态机的表示下 我理解为什么补码仍然是常规语
  • 向静态 Azure 网站添加身份验证

    我们有一个 Azure 网站 托管一个静态站点 仅一些 HTML CSS Javascript 然后通过 AJAX 调用与我们的 Azure 移动服务进行通信 我们想向该站点添加一些非常简单的身份验证 只需静态用户名 密码就足够了 请推荐最
  • 如何在 scipy.optimize 中使用 fmin_cg 获得正确的尺寸

    我一直在尝试使用 fmin cg 来最小化逻辑回归的成本函数 xopt fmin cg costFn fprime grad x0 initial theta args X y m maxiter 400 disp True full ou
  • Java foreach 对原语的迭代顺序是否精确定义?

    示例代码 int a new int 0 1 2 3 int result 0 for int i a result i 循环是否保证迭代a 0 a 1 a 2 a 3 以该顺序 我坚信答案是肯定的 但是这一页 http java sun
  • JLabel 仅显示 initComponents() 是否被删除

    MainFrame java JFrame public MainFrame initComponents Letters pl new Letters this this setContentPane pl this setTitle P
  • 无法使用反应钩子读取未定义的属性“映射”

    我试图使用 fortnite api 来显示当前的物品商店 但我收到了如标题所示的错误 当我控制台日志结果时 它显示一个数组 但我无法映射它 为什么 import React useState useEffect from react im
  • 在互操作 C# 期间延迟 Excel 计算

    我必须从 C 程序将数百个单元格输入到 Excel 工作表中 每次我设置一个单元格或一个范围时 Excel都会缓慢响应 大概是在我添加的每个输入之间更新各种输出 有没有办法禁用我的 C 程序的计算 并在完成设置单元格并准备好读取输出后重新启
  • LINQ 有条件添加联接

    我有一个 LINQ 查询 我试图从 2 个表返回数据 但我加入的表是有条件的 这就是我想做的 if teamType A var query from foo in context People join foo2 in context P
  • 在运行时请求管理员权限

    如何在运行时请求管理员权限 以便提示用户允许或禁止 如果您希望它响应按钮 例如 像任务管理器中的 显示所有用户的进程 您必须使用以下方法重新启动您的应用程序 ShellExecute 0 L runas exepath 0 0 SW SHO
  • 如何使用 Visual Studio 为 .net Framework 4.7.2 项目创建 SDK 样式项目?

    我运行的是最新版本的VS2019 16 6 1 然而 Windows 类库的新项目向导仍然创建旧样式的项目 我想用这个方法研究这个问题 https stackoverflow com questions 62251125 target v4
  • 如何使我的本地主机可通过互联网访问

    我在本地计算机上的 JBoss 上托管了一个应用程序 我也可以通过 localhost 或通过我的 IP 访问 现在我希望其他用户可以通过我的 IP 通过互联网访问同一个应用程序 您能让我知道如何配置 JBoss 来处理这些请求吗 http
  • 无法从 WinApi 箱调用 CryptDecrypt,因为它找不到模块

    In the 文档 https docs rs winapi x86 64 pc windows msvc winapi um wincrypt fn CryptDecrypt html它说该函数位于winapi um wincrypt C
  • 如何将 tr 附加到表格顶部

    我如何将新的 tr 附加到表格顶部而不是其他 tr 下 Example table width 100 tr td something td td else here td tr tr td something2 td td else he
  • scala中基于相邻元素之间差异的拆分列表

    我们如何根据相邻元素之间的差异在 scala 中拆分列表 例如 给定 List 1 3 6 10 12 14 和差值 3 该函数将返回 List List 1 3 List 6 List 10 12 14 我们可以使用foldLeft 来做
  • 如何为 Android 中单击的图像按钮制作边框?

    我正在使用 Imagebuttons 在我的 android 项目中显示一些图标
  • 值不能为 null 或为空。\r\n参数名称: name

    当我进入 cshtml 页面时出现此错误 System Web Mvc dll 中发生 System ArgumentException 类型的异常 但未在用户代码中处理 在我的 cshtml 代码中 div class form grou
  • 基于“附近”行值聚合

    我有一个非常混乱的数据框 网络抓取 不幸的是其中有许多双重甚至三重条目 大多数数据框如下所示 gt df1 lt data frame var1 c a a b b c c d d var2 c right a NA right b NA
  • 更新 SQL 中的多列

    有没有办法像使用插入语句一样更新 SQL Server 中的多个列 就像是 Update table1 set a b c d e f g h i j k t2 a t2 b t2 c t2 d t2 e t2 f t2 g t2 h t2
  • 如何获取 dotnet core 3 的路由属性?

    我已将 dotnet core 2 2 升级到 3 preview 7 所以在那之后 我无法获得自定义属性 context Resource在 2 2 版本中是类型AuthorizationFilterContext 但在版本 3 中是类型