从内部调用安全的ServiceStack服务

时间:2016-02-22 10:04:23

标签: c# .net servicestack httpserver

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

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

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

1 个答案:

答案 0 :(得分:1)

是的,你可以直接调用ServiceStack Services,就像任何其他依赖项一样,从IOC解析并直接调用它:

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

另一种API是执行请求DTO,ServiceStack将查找并执行使用提供的请求DTO定义的相应PostAny服务:

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

同样相关,请参阅有关能够impersonate users for Internal Requests而无需用户密码的文档。