我无法找到有关如何在ServiceStack中实现响应过滤器的完整教程。
我发现的最好的是代码的一部分: https://github.com/ServiceStack/ServiceStack/wiki/Request-and-response-filters#apply-custom-behavior-to-multiple-dtos-with-interfaces
我最终想要做的是实现一个过滤器,删除经过身份验证的人不应该看到的任何DTO。有点'抓住任何不可能的结果',以便100%安心,以防一些初级人员意外地破坏SQL存储过程并返回错误的结果,以及其他情况。
有人能指出我正确的方向吗?来自Github Wiki的代码可以避免如何/在何处使用它,并使用它!
答案 0 :(得分:1)
文档显示了如何在AppHost.Configure()
中注册register a Response Filter - 这是应该维护所有AppHost配置的地方。
不清楚你的意思是"过滤掉不需要的DTO",每个服务只返回一个DTO(响应),您可以返回,修改或选择通过短路响应完全不回来。
在下面的示例响应过滤器中,我们将阻止任何DTO实现自定义ISpecialDto
接口,只返回经过身份验证的用户:
this.GlobalResponseFilters.Add((req, res, responseDto) => {
var specialDto = responseDto as ISpecialDto;
if (specialDto == null) return;
var userSession = req.GetSession();
if (!userSession.IsAuthenticated)
{
res.StatusCode = (int)HttpStatusCode.Forbidden;
res.StatusDescription = "Must be Authenticated";
res.EndRequest();
}
});
因此,如果未经过身份验证的用户调用返回实施ISpecialDto
的响应DTO的服务,他们将收到空 403禁止响应。