也许我正在考虑这个错误,但我正在尝试为我们的CMS创建一个自定义属性来处理身份验证。
https://gist.github.com/sitefinitysteve/62ab761256a64a84d8a6#file-sitefinityjwt-cs-L39
因此,如果从登录用户的CMS内部调用此服务,则用户数据已经存在于服务方法中。
但是在从应用程序调用的上下文中,用户在技术上是匿名的,但是我可以解码令牌并让用户很好......但不知道如何将其传递给服务。
我只是在考虑这个错误,而且正确的做法是调用CMS API方法来记录该人(如果我已经拥有第33行的人员用户对象,那么服务上下文似乎很慢即将到期。
答案 0 :(得分:3)
您可以将IRequest.Items
字典用于您想要传递的所有数据ServiceStack's Request Pipeline:
//RequestFilter:
req.Items["info"] = new MyRequestInfo { ... };
在服务中:
var info = (MyRequestInfo)base.Request.Items["info"];
向服务添加额外信息的另一个选择是让Request DTO实现接口,例如:
public interface IHasInfo
{
MyRequestInfo Info { get; set; }
}
然后您可以在您的请求过滤器中填充,例如:
((MyRequestInfo)dto).Info = new MyRequestInfo { ... };
在服务中访问,就像任何其他DTO属性一样,例如:
public object Any(Request request)
{
var info = request.Info;
}