在 Web API ASP.NET Core 中检查 api 密钥的简单方法

2024-01-11

我想简单地检查 Api 密钥(在授权标头中发送),然后再允许某些 Web API 端点受到攻击。为了解决这个问题,我们假设 ApiKey 是12345。我只想在到达特定操作方法之前检查此 Api Key 的值。我无法弄清楚这是否需要自定义 AuthorizeAttribute 或操作过滤器。


简单地说,我发出一个带有 header 的 GET 请求Authorization: apiKey 12345

授权属性实现如下所示:

public class AuthorizationFilterAttribute : Attribute, IAuthorizationFilter
{
    public void OnAuthorization(AuthorizationFilterContext context)
    {
        var apiKey = context.HttpContext.Request.Headers["Authorization"];

        if (apiKey.Any())
        {
            // this would be your business
            var subStrings = apiKey.ToString().Split(" ");
            if (!(subStrings.Length >= 2 && subStrings[0] == "apiKey" && subStrings[1].Any()))
            {
                context.Result = new NotFoundResult();
            }
        }
        else
        {
            context.Result = new NotFoundResult();
        }
    }
}

在此代码示例中,apiKey is subStrings[1]

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

在 Web API ASP.NET Core 中检查 api 密钥的简单方法 的相关文章

随机推荐

  • ZF2 toRoute 与 https

    我们正在使用 Zend Framework 2 并使用toRoute在我们的控制器中重定向到不同的位置 例如 this gt redirect gt toRoute home 无论如何 是否可以使用此方法或替代方法将其重定向到 https
  • 如何嵌入文件以供以后解析执行使用

    我本质上是想浏览一个 html 文件的文件夹 我想将它们嵌入到二进制文件中 并能够根据请求解析它们以用于模板执行目的 如果我措辞不当 请原谅 任何想法 提示 技巧或更好的方法来实现这一点都非常感谢 Template Files type T
  • Base64 java 中的文件编码失败

    我有这个类来编码和解码文件 当我使用 txt 文件运行该类时 结果成功 但是 当我使用 jpg 或 doc 运行代码时 我无法打开该文件 或者它不等于原始文件 我不知道为什么会发生这种情况 我修改了这个类http myjeeva com c
  • 在 Node 中通过“_id”搜索 MongoDB 条目的正确方法

    我在用着MongoDb 作为 的一部分MongoJS in Node 这是 MongoJS 的文档 https github com gett mongojs 我正在尝试根据条目在 Node 内进行调用 id场地 使用香草时MongoDB从
  • 如何改变gvim中的左边距

    我在 XP 上有 gvim 7 3 我的问题是 当我编辑文件并关闭行号时 文本距离左窗口边距太近 我不想添加前导空白 我想增加边距 当我有行号时 我不喜欢 左窗口边框和行号之间有足够的空间 行号和文本之间有足够的空间 但是当行号关闭时就没有
  • 如何获取隐藏数据库的数据库模式?

    我的客户是一家牙科诊所 购买了一款诊所管理软件 该软件安装在他们的本地服务器上 包括患者数据库 时间表和各种医疗记录 现在他们希望我为他们编写一些他们的软件包中未提供的实用程序 为此我需要能够查询该数据库 我尝试致电软件制造商的技术支持 帕
  • Azure AD - 仅应用程序令牌中缺少角色声明

    当我尝试从 Nodejs 后端服务器获取仅应用程序令牌时 如下所述here https learn microsoft com en us graph auth v2 service 4 get an access token 有时role
  • 如何在 Vim 中创建文件夹(优先使用 NERDTree)?

    我知道如何创建重命名 删除和移动文件NERDTree 只需按m then either a d or m 但我不知道如何创建文件夹 有谁知道如何做到这一点NERDTree 或者只是以 vim 的原生 方式 You use m a并放置一个尾
  • ##+#. 是什么意思?是什么意思?

    谷歌几乎是不可能的 因此我的理解仅限于阅读 slime 源代码的上下文线索 也许它是 common lisp 中对象系统的一部分 类似 自己 的东西 片段 cond swank backend sbcl with new stepper p
  • 基于列子集修剪 NA - 更优雅的解决方案?

    stackoverflow 社区的新年难题 通过阅读过去的帖子和答案很有帮助 这是我的第一个问题 我找到了解决方法 但我想知道是否可以建议其他方法 解决方案 我正在尝试从大型文件中删除尾随的 NAdata frame 但这些 NA 只出现在
  • jQuery UI DatePicker - 禁用除每月最后一天之外的所有日期

    我正在尝试使用 jquery UI 日期选择器来显示仅可选择该月最后一天的日历 我已成功使用 beforeShowDay 事件禁用一周中的几天 但不确定如何使用它来禁用除该月最后一天之外的所有内容 beforeShowDay 会为日历上显示
  • Android - 仅垂直布局

    如何确保我的应用程序仅适用于垂直布局 我努力了android screenOrientation portrait 但这似乎并不能解决问题 您需要添加到所有活动中 而不仅仅是一项活动 我认为您了解设置是每个应用程序范围内的 但事实并非如此
  • 计算测试集每个类别的熵以测量 pytorch 上的不确定性

    我正在尝试使用 MC Dropout 方法和此链接中提出的解决方案来计算图像分类任务的数据集的每一类的熵 以测量 pytorch 上的不确定性 在 pytorch 上使用 MC Dropout 测量不确定性 https stackoverf
  • Firebase 在 React-native-android 上的 Facebook 登录

    我一直在尝试从 Firebase 文档中获取 Facebook 登录代码片段 但出现以下控制台错误 window open 不是一个函数 在 React Native 应用程序上实现 Firebase 的 Facebook 登录的正确方法是
  • 对拉取请求批准和路径触发 GitHub 操作

    我想构建一个在拉取请求 PR 批准时触发的 GitHub 操作 但仅当 PR 包含对特定路径的修改时才触发 目前 我有以下实现 on pull request review types submitted paths mypath jobs
  • 重新加载使用“from X import Y”导入的组件 Y

    在Python中 一旦我在解释器会话中导入了模块X 使用import X 并且模块在外部发生变化 我可以使用以下命令重新加载模块reload X 然后 这些更改将在我的口译会话中可用 我想知道当我使用从模块 X 导入组件 Y 时这是否也可能
  • 在需要函数的地方使用构造函数

    参加两门简单的课程Int作为一个论点 case class Foo i Int class Bar j Int 我可以说 List 1 2 3 map Foo 效果很好 相当于更详细一点 List 1 2 3 map Foo However
  • 使用 fs.writeFile 保存图像

    我正在尝试使用我获得的节点文件系统保存图像https picsum photos https picsum photos 但正在写入的文件不是我所期望的 const axios require axios const path requir
  • Android Polyline - 逐点添加

    我目前有一张地图 每 10 米我使用 LocationListener 刷新我的位置并获取新的纬度和经度 现在我希望用户正在走的路线会用红线显示 因此 每次调用 LocationListener 类中的 OnLocationChange 时
  • 在 Web API ASP.NET Core 中检查 api 密钥的简单方法

    我想简单地检查 Api 密钥 在授权标头中发送 然后再允许某些 Web API 端点受到攻击 为了解决这个问题 我们假设 ApiKey 是12345 我只想在到达特定操作方法之前检查此 Api Key 的值 我无法弄清楚这是否需要自定义 A