【问题标题】:How to Add a new Name Value Pair to an Incoming Request's Headers in ServiceStack 5.0?如何在 ServiceStack 5.0 中向传入请求的标头添加新的名称值对?
【发布时间】:2019-02-22 21:35:42
【问题描述】:

我有一个自定义插件,我将其添加到 AppHost 的 Configure 方法中的插件列表中。

我正在使用这个插件来验证通过 Postman 来的内部用户。获取他们的凭据,对他们进行身份验证并为他们创建一个令牌。我想将此令牌添加到请求标头中。

这曾经与 ServiceStack 4.0 一起工作,但在 5.0 中,允许这样做的 INameValueCollection 的实现已被弃用并被 c# 的 NameValueCollection 取代。但是 NameValueCollection 不允许你添加任何东西,除非你创建一个新的 NameValueCollection 对象(它会抛出一个错误,说“不支持指定的方法”)但是 IRequest 中的 Headers 没有设置器,所以我不能这样做要么。

是否有理由删除向传入请求标头添加内容的功能?有没有其他方法可以完成同样的事情?

【问题讨论】:

    标签: servicestack


    【解决方案1】:

    您不应该修改传入的请求标头,这些标头在大多数主机中是不可变的,它也体现在 ServiceStack 的轻量级抽象中。将IRequest.Items 字典用于您想要附加到请求的任何元数据,该元数据可用于整个ServiceStack's Request Pipeline 中的所有过滤器/服务/等。

    【讨论】:

    • 如何确保请求将具有正确的授权,因为 NetCoreRequest.cs 从标头获取它? public string Authorization => request.Headers[HttpHeaders.Authorization];
    • @val 听起来这应该是一个自定义身份验证提供程序,但您可以通过populating its Session in IRequest.Items 对用户进行身份验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    相关资源
    最近更新 更多