2016-04-27 3 views
1

У меня возникли проблемы с поиском полных руководств по внедрению фильтра ответов в ServiceStack.Как реализовать фильтр ответов в ServiceStack для фильтрации нежелательных DTO

Лучшее, что я нашел это часть кода: https://github.com/ServiceStack/ServiceStack/wiki/Request-and-response-filters#apply-custom-behavior-to-multiple-dtos-with-interfaces

То, что я в конечном счете хочу сделать, это реализовать фильтр, который удаляет любые DTO о том, что идентифицированный человек не должен быть в состоянии видеть. Вид «поймать любые невозможные результаты» для 100% спокойствия в случае, если какой-то младший случайно замалчивает хранимую процедуру SQL и возвращает неверные результаты среди других сценариев.

Может ли кто-нибудь указать мне правильное направление? Код из Github Wiki ускользает от того, как/куда его поместить, и используйте его!

ответ

1

Документы показывают, как register a Response Filter, которые вы должны зарегистрировать в своем AppHost.Configure() - здесь вы должны поддерживать всю конфигурацию AppHost.

Непонятно, что вы подразумеваете под «фильтром нежелательных DTO», каждая Служба возвращает только один DTO (Response), который вы можете либо вернуть, изменить, либо не отказаться вообще от возврата путем короткого замыкания ответа.

В фильтре Пример ответа ниже мы будем препятствовать любой 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 Forbidden.

+0

Я думаю, что моя терминология немного шелушащаяся. «Фильтровать нежелательные DTO» я имею в виду, когда DTO включает список объектов, тогда я хочу удалить любые нежелательные объекты. Я запутался в классе «AppHost», который я спрятал в своем Global.asax. Спасибо за помощь! –

Смежные вопросы