c# - 如何在 ViewComponent 或库中向 nSwag 生成的客户端添加不记名令牌?
问题描述
我正在使用 nSwag 生成的客户端来调用需要传入不记名令牌的 API。
我已经将我的客户端设置为与此答案相同https://stackoverflow.com/a/49801655/3953989
我正在调用SetBearerToken()
我的 BaseControllerOnActionExecuting()
并从 cookie 中提取我存储的不记名令牌。
BaseController.cs
public class BaseController : Controller
{
protected IApiClient ApiClient;
public BaseController(IApiClient apiClient)
{
ApiClient = apiClient;
}
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!string.IsNullOrWhiteSpace(CookieData?.Token))
{
ApiClient.SetBearerToken(CookieData.Token);
}
base.OnActionExecuting(context);
}
}
我也为 DI 设置了 ApiClient
Startup.cs
services.AddHttpClient<IApiClient, ApiClient>(client =>
{
client.BaseAddress = new Uri(appSettings.Value.ApiBaseUrl);
});
这适用于控制器,因为HttpContext
在期间可用,OnActionExecuting()
但 ViewComponents 没有等价物。
- 如何在 ViewComponent 中设置我的不记名令牌?
- 我也想知道我应该如何在我在控制器构造函数中创建的库中处理这个问题。
TestController.cs
public class TestController : BaseController
{
private readonly IUserService _userService;
public TestController(IApiClient apiClient) : base(apiClient)
{
var cookieData = HttpContext..... // HttpContext is null here
apiClient.SetBearerToken(cookieData.Token)
_userService = new UserService(apiClient);
}
}
解决方案
推荐阅读
- vba - 如何将绘图从 Visio 页面复制到 Word 文档
- sql - 在 SQL 中减去两个 COUNT 值
- javascript - 如何在jQuery中匹配类并在之后添加一个新类
- xamarin - Xamarin,如何为项目中的图像文件名生成常量?
- c# - 泛型方法和 NRT 返回类型 - 奇怪的编译器警告
- cmake - 如何通过 CMake 命令行注入符号
- prolog - 如何检查序言中列表的每3个连续项目
- java - 附加到文件的数字签名
- r - 代码不会对 R 中的闪亮变化进行动画处理
- kubernetes - 如何找到正确的 devicePaths 以用于 Openshift 持久卷的本地存储?