http请求头_ASP.NET Core实现Http自定义请求头策略

本文介绍了如何在ASP.NET Core中通过IHttpContextAccessor实现自定义HTTP请求头策略,特别是在多租户场景下,将租户信息作为请求头传递,以避免参数污染。文中详细讲解了IHttpHeaderAccessor的定义、服务注册、使用方法以及Swagger中的本地调试配置。
摘要由CSDN通过智能技术生成

(给DotNet加星标,提升.Net技能)

转自:lex-wu cnblogs.com/lex-wu/p/13301272.html

前言

在正常的情况下,当我们系统用到JWT认证方式时,需要在Http请求头添加Authorization: XXX,这样在后台服务的控制器中打上[Authorize]授权标签,就限定所有的请求必须通过鉴权方可访问。

在ASP.NET Core - 基于IHttpContextAccessor实现系统级别身份标识这篇文章中我们能够注意到,通过IHttpContextAccessor获取基于请求生成的HttpContext后,我们是能够拿到基于该次请求的所有http信息的。这就给予了我们可以基于Http的请求做自定义请求头的策略来满足我们业务的扩展。

场景

在不少的场景中,特别是多租户的场景中,我们是需要知道当前是哪个租户下的用户在操作,而我们又不需要把这租户作为业务参数传递,毕竟如果按照业务参数这样的方式去实现的话,就好比从源头传入了一个污染源,需要一路污染下去,这是非常不推荐的方式,这时就可以利用自定义http请求头来传递这个参数,在最终需要用到这个参数的时候获取出来。

在我们的系统层面,例如我们的应用部署在K8S集群中的网络,在网关层解析了JWT通过认证后放行之后,内网的应用服务可以依赖内网的保护把JWT的认证删减掉(这样在一定程上是可以提高性能的),我们就可以通过以下自定义头的实现方式,把租户信息携带在http头部,一路传递下去。

实现

类似于我们在【ASP.NET Core - 基于IHttpContextAccessor实现系统级别身份标识】中的IHttpContextAccessor实现方式一样,我们先定义我们的IHttpHeaderAccessor用来获取HttpHeader

/// 
/// httpcontext的header
///
public interface IHttpHeaderAccessor
{
///
/// the httpheader
///
IHeaderDictionary HttpHeader { get; }
}

HttpHeaderAccessor 的实现  

/// 
/// httpheader访问器
///
public class HttpHeaderAccessor : IHttpHeaderAccessor
{
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值