servicestack,Filter,servicestack" /> servicestack,Filter,servicestack" />

Filter 如何在ServiceStack中实现响应过滤器以过滤掉不需要的DTO';s

Filter 如何在ServiceStack中实现响应过滤器以过滤掉不需要的DTO';s,filter,servicestack,Filter,servicestack,我很难找到关于如何在ServiceStack中实现响应过滤器的完整教程 我发现最好的是代码的一部分: 我最终想要做的是实现一个过滤器,删除任何被认证的人不应该看到的DTO。这是一种“捕获任何不可能的结果”的方法,可以让您100%安心,以防一些初级用户意外地破坏SQL存储过程并返回错误的结果,以及其他情况 谁能给我指出正确的方向吗?Github Wiki中的代码避开了如何/在何处放置和使用它 这些文档显示了您应该如何在AppHost.Configure()中注册哪些应用程序-这是您应该维护所有A

我很难找到关于如何在ServiceStack中实现响应过滤器的完整教程

我发现最好的是代码的一部分:

我最终想要做的是实现一个过滤器,删除任何被认证的人不应该看到的DTO。这是一种“捕获任何不可能的结果”的方法,可以让您100%安心,以防一些初级用户意外地破坏SQL存储过程并返回错误的结果,以及其他情况

谁能给我指出正确的方向吗?Github Wiki中的代码避开了如何/在何处放置和使用它

这些文档显示了您应该如何在
AppHost.Configure()
中注册哪些应用程序-这是您应该维护所有AppHost配置的地方

不清楚“过滤不需要的DTO”是什么意思,每个服务只返回一个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();
    }
});

因此,如果一个未经身份验证的用户调用一个返回响应DTO的服务,该服务实现了
ISpecialDto
,他们将收到一个空的403禁止的响应。

我认为我的术语有点古怪。所谓“过滤不需要的DTO”,我的意思是,如果DTO包含对象列表,那么我希望删除任何不需要的对象。我对“AppHost”类感到困惑,我把它隐藏在我的Global.asax中。谢谢你的帮助!