如何调用请求标头上需要不记名令牌的 NSwag 客户端方法?

2023-12-25

我没有确切了解 NSwag 如何与 IdentityServerX 不记名令牌交互并按常规添加请求标头?据我了解,我的主机 api 应用程序使用 LDAP 身份验证实现了 IdentityServer3;如果任何主机需要令牌进行身份验证,则任何客户端都必须在请求标头中发送它。那么,在与 NSwag 客户合作时我该如何处理呢?

任何想法表示赞赏。 谢谢。


@oguzhan-soykan 和 @peter 的答案都很好 - 这是 @peter 答案的扩展,以展示如何实现基类而不是为每个 API 客户端重复自己。

要求

  • NSwag.MSBuild 包
  • Swagger .JSON定义

创建一个公开您需要的功能的“客户端”基类。可能是不记名令牌财产。

public abstract class MySwaggerClientBase
{
    public string BearerToken { get; private set; }

    public void SetBearerToken(string token)
    {
        BearerToken = token;
    }

    // Called by implementing swagger client classes
    protected Task<HttpRequestMessage> CreateHttpRequestMessageAsync(CancellationToken cancellationToken)
    {
        var msg = new HttpRequestMessage();
        // SET THE BEARER AUTH TOKEN
        msg.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", BearerToken);
        return Task.FromResult(msg);
    }

}

编辑 swagger 代码生成命令,为所有生成的客户端使用基类,并使用使用HttpRequestMessageCreation方法 https://github.com/RicoSuter/NSwag/wiki/CSharpClientGeneratorSettings option.

<Project>
 ...
<Exec Command="$(NSwagExe) swagger2csclient /input:path-to-swagger-definition.json /output:$(ProjectDir)\Swagger.generated.cs /Namespace:MyNameSpace /ClientBaseClass:MySwaggerClientBase /UseHttpRequestMessageCreationMethod:true" />
 ...
</Project>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何调用请求标头上需要不记名令牌的 NSwag 客户端方法? 的相关文章

随机推荐

  • 追踪流星/节点光纤中的堆栈溢出

    我现在看到了这个崩溃 并且对节点光纤基础设施不够熟悉 不知道从哪里开始解释错误或检测代码 Meteor server running on http localhost 3000 W202407 10 06 05 740 8 STDERR
  • go get:忽略 Git 设置

    我正在使用 Golang 和 GitLab CI 并且我有一个 GitLab CI 配置 它非常适合 12 个项目 但不适用于第 13 个项目 我遇到的问题是我正在尝试go get一些私人存储库 其中go get尝试通过已关闭的 HTTPS
  • 带 www 或不带 www 的默认 URL 有何优缺点?

    我们需要将默认 URL 设置为唯一名称 如果是 www 则没有前缀 反之亦然 因此要做出的决定是坚持使用 www 或不使用前缀 没有为所有子域设置前缀 cookie 它还有什么其他缺点 还是好处 基本上我们需要 OpenID 这个 因为如果
  • SQL Server:对于不存在的行,用 0 填充 MAX(列)值

    我想为表中不存在的行的 MAX TIER 返回 0 到目前为止 这是我的代码 SELECT LAST YARD BAY LAST YARD ROW MAX LAST YARD TIER as MAX TIER FROM Handlift W
  • 向 SQL Server 中的存储过程添加参数

    我是新来的K2and SQL Server 我想向存储过程添加一个参数 稍后将其绑定到K2相应视图和表单的智能对象 目前它接受 1 个参数 lang 这是来自标签的输入K2智能形式视图 我添加了一个标签labelHideInactiveCo
  • 首次折叠的 K 次折叠精度较低

    我创建了一个文本分类器 并且正在尝试利用 K 折交叉验证 我不明白为什么我的第一次折叠的准确度为 55 而我的其他折叠则在 99 100 的准确度下过度拟合 我的数据集是一个 5109x2 数据框 其中列 df Features 作为特征
  • CS0120:非静态字段、方法或属性“foo”需要对象引用

    考虑 namespace WindowsApplication1 public partial class Form1 Form public Form1 InitializeComponent private void button1 C
  • 如何使用 OpenCV 从图像中裁剪和提取图章?

    我是 OpenCV 新手 我有一个 简单 的邮票图像 我已经对其进行了一些处理 如下面的代码所示 现在我遇到了裁剪图像以获得印章的问题 边缘上的点和条纹会干扰我当前识别邮票的代码 图像可能不同 因此无法修复图像的位置 Code img cv
  • 循环算法Java实现

    我认为我的问题相当简单 但我觉得我需要一些不同的视角 因为我似乎无法将这个算法转化为代码 我需要制定一个运动队赛程表 其中 n 支球队 在本例中为 10 支球队 以循环赛形式进行比赛 规则遵循基本的循环赛格式 其中一支球队在给定时间只能与另
  • 基于 Woocommerce 中的自定义单选按钮的动态运费

    在 Woocommerce 中 我在结帐页面上添加了两个自定义单选按钮 单击后 我调用 ajax 函数来添加送货费 这是我的代码 document on change shipping method 0 local pickup5 func
  • 如何在 TBody 中将 TH 标头与 TD 对齐

    我在尝试使用一些 CSS 将表格嵌入现有 HTML 页面时遇到问题 默认情况下 此 CSS 隐藏表格的标题 其样式定义如下 tablestuff thead display none 但我希望显示表格 所以我尝试使用 display blo
  • Visual Studio 2017 安装中断:无法启动

    我使用管理员权限安装vs enterprise exe 但安装包根本不起作用 操作系统 win10专业版 appdata local temp 中的安装日志如下 dd bootstrapper 20170313103210 日志的开头 开始
  • Woocommerce:仅显示同一子类别的相关产品

    相关产品是从您的商店中提取与当前产品具有相同标签或类别的其他产品的部分 src Woocommerce 文档 http docs woothemes com document related products up sells and cr
  • Cordova 应用程序中的 HTTP 加载失败(kCFStreamErrorDomainSSL,-9813)

    我使用 Cordova 3 2 和 jquery mobile 1 3 创建了一个 iOS 应用程序 我使用 jquery ajax 向 RESTfull 服务发送请求以检索 更新信息 我有很多测试设备 各种 iPhone 具有各种不同的
  • Xcode 11 中如果没有更多上下文,表达式类型不明确

    我想参考一个 Item 列出一个内 EnvironmentObject但是当在一个范围内访问它时SwiftUI List 我收到错误 我不明白的是 执行以下操作时不会弹出此错误Apple 的 Landmark 教程 https develo
  • MPRemoteCommandCenter 对 MPMusicPlayerController 不执行任何操作

    我一直在编写使用的代码 MPMusicPlayerController applicationMusicPlayer 演奏音乐 此操作已成功运行 并将在控制中心屏幕上显示当前播放曲目的详细信息 不幸的是 我似乎无法从控制中心屏幕或耳机中使用
  • Rails、jQuery、.js.erb 文件、JS 不被浏览器执行

    我正在尝试使用 jQuery 一切都很棒 直到现在 当我尝试渲染部分并将其附加到 div 时 这是我的设置方法 我有一个响应 js 的操作 def index objects Object find all respond to do fo
  • 如何使用 powershell 脚本在 CSV 文件顶部添加新行?

    我是 powershell 脚本编写的新手 我正在寻找一种方法在现有 csv 文件的顶部添加 2 个新行 我尝试过的事情是用新行替换标题和行 我正在寻找一种在 CSV 标题上方添加 2 个新行的方法 您提到您要添加新行above标头 这意味
  • Symfony $request->isXmlHttpRequest() 问题

    我需要检查请求是否是ajax request gt isXmlHttpRequest 工作正常 但是如果在执行过程中某个地方有重定向 此方法将返回 false 在这种情况下我还能如何检查请求是否是ajax 附注ajax是由jQuery发起的
  • 如何调用请求标头上需要不记名令牌的 NSwag 客户端方法?

    我没有确切了解 NSwag 如何与 IdentityServerX 不记名令牌交互并按常规添加请求标头 据我了解 我的主机 api 应用程序使用 LDAP 身份验证实现了 IdentityServer3 如果任何主机需要令牌进行身份验证 则