gpt4 book ai didi

servicestack - 使用 RequestFilter 在 ServiceStack 中执行自定义身份验证

转载 作者:行者123 更新时间:2023-12-01 02:26:12 26 4
gpt4 key购买 nike

全新的 ServiceStack,如果这很简单,请原谅我。

我正在编写一个 API,它将使用自定义 HTTP header 作为身份验证信息。我添加了一个 RequestFilter 像这样:

RequestFilters.Add((httpReq, httpResp, requestDto) =>
{
if(httpReq.Headers["MyMagicHeader"] != "magic")
{
throw HttpError.Unauthorized("Unauthorized");
}
else
{
//TODO: Populate a "Client" object accessible by the Service
}
});

我的问题是,我现在如何使用我根据魔术 header 中的值创建的“客户端”对象提供有问题的服务?

从它的外观来看,我唯一的选择是通过 DTO 传递此信息。所以我想添加一个我所有的 DTO 都继承自的基类,这个基类将包含一个 Client 属性。

这是正确的方法吗?

最佳答案

在同一请求中传递所有过滤器和服务中可用的任何信息的方法是使用 httpReq.Items对象字典,例如Dictionary<string,object>

RequestFilters.Add((httpReq, httpResp, requestDto) =>
{
if(httpReq.Headers["MyMagicHeader"] != "magic")
{
throw HttpError.Unauthorized("Unauthorized");
}
else
{
//TODO: Populate a "Client" object accessible by the Service
httpReq.Items["MagicToken"] = CreateMagicValue(httpReq.Headers["MyMagicHeader"]);
}
});

关于servicestack - 使用 RequestFilter 在 ServiceStack 中执行自定义身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16196537/

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