2016-04-27 4 views
1

ServiceStackでレスポンスフィルタを実装する方法に関する完全なチュートリアルを見つけることができません。ServiceStackでレスポンスフィルタを実装して、不要なDTOをフィルタリングする方法

私が見つけた最高のコードの一部です: https://github.com/ServiceStack/ServiceStack/wiki/Request-and-response-filters#apply-custom-behavior-to-multiple-dtos-with-interfaces

私は最終的にやりたいと思っています何が認証済みの人が見ることはできないはずの任意DTOのことを除去するフィルタを実装しています。一部のジュニアが誤ってSQLストアドプロシージャを実行し、他のシナリオの間で間違った結果を返す場合は、100%の安心感を得るために「不可能な結果を​​キャッチ」することができます。

誰でも正しい方向に向けることができますか? Github Wikiのコードは、どのように/どこに置いて、それを使うのかを逃す!

答えて

1

ドキュメントには、AppHost.Configure()に登録する必要があるregister a Response Filterの方法が表示されます。これは、すべてのAppHost設定を維持する場所です。

「不要なDTOをフィルタリングする」とは何を意味するのかは不明ですが、各サービスは応答を短絡することによって戻ったり修正したりしないことを選択できる単一のDTO(応答)のみを返します。

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インターフェイスが認証されたユーザーに返すことを防止します下の例応答フィルタで

ISpecialDtoを実装しているDTOでは、空の403 Forbiddenの代わりにという応答が返されます。

+0

私の用語は少し薄れていると思います。 「望ましくないDTOをフィルターにかける」とは、DTOにオブジェクトのリストが含まれている場所を意味し、不要なオブジェクトを削除したいという意味です。私は、Global.asaxで隠していたAppHostクラスについて混乱していました。助けてくれてありがとう! –