gpt4 book ai didi

servicestack:将 www-authenticate header 添加到错误响应

转载 作者:行者123 更新时间:2023-12-02 03:46:57 25 4
gpt4 key购买 nike

由于缺少授权而抛​​出 401 错误时,我想包含 www-authenticate header 。

但是我该怎么做呢?

我尝试使用响应过滤器,但似乎不起作用。

编辑

当抛出 httperror 时,我的响应过滤器不会被调用:

appHost.ResponseFilters.Add((req, res, obj) => res.AddHeader(HttpHeaders.WwwAuthenticate, "Basic realm=..."));

调用了异常处理程序,但添加的 header 不是响应的一部分(根据 Chrome 开发工具和 Postman)

appHost.ExceptionHandler += (req, res, name, exception) => res.AddHeader(HttpHeaders.WwwAuthenticate, "Basic realm=...");

最佳答案

我找不到任何可以添加到响应 header 的钩子(Hook):

  • ResponseFilters 不会在抛出异常后调用。
  • ServiceExceptionHandler 不提供响应对象。
  • ExceptionHandler 在响应发送后 被调用,所以为时已晚。

由于我在请求过滤器中检查凭据,因此我可以访问那里的响应对象。我最终得到了一个自定义异常 LogonException,我可以捕获并添加 header :

appHost.RequestFilters.Add(
(req, res, obj) =>
{
var creds = request.GetBasicAuthUserAndPassword();

try
{
myService.logon(creds);
}
catch(LogonException)
{
res.AddHeader(HttpHeaders.WwwAuthenticate, "Basic realm=...");
trow;
}
});

关于servicestack:将 www-authenticate header 添加到错误响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16389212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com