4

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

我正在编写一个 API,它将使用自定义 HTTP 标头来获取身份验证信息。我添加了一个 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
    }
});

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

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

这是正确的方法吗?

4

1 回答 1

3

在同一请求中传递所有过滤器和服务中可用的任何信息的方法是使用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"]);
    }
});
于 2013-04-24T16:37:25.890 回答