从内部调用安全的 ServiceStack 服务

Calling secure ServiceStack service from within

我的主要服务使用 [Authenticate] 属性修饰,因此任何连接尝试(这很重要)都需要客户端身份验证。

[Authenticate]
public class ServerEventsService : Service
{
...
}

有没有什么方法可以从服务器内部调用服务方法(比如在 self\web 主机 类 中)并绕过身份验证?据我所知,ServiceStack 中没有 [AllowAnonymous] 东西。如果没有办法绕过身份验证过程——我该如何验证此类请求?这里唯一的方法是在我的服务器主机中创建另一个 ServiceClient 吗?

是的,您可以像任何其他依赖项一样直接调用 ServiceStack 服务,方法是从 IOC 解析它并直接调用它:

using (var service = base.ResolveService<ServerEventsService>())
{
    var response = service.Post(new Request { ... });
}

另一种方法 API 是执行 Request DTO,ServiceStack 将找到并执行适当的 PostAny 使用提供的 Request DTO 定义的服务:

base.ExecuteRequest(new Request { ... });

此外,请参阅有关无需用户密码即可impersonate users for Internal Requests的文档。