2016-02-22 14 views
5

私のSpring REST Webアプリケーションでは、私は多くのドメインオブジェクトとDTOを持っています。春のセキュリティロールに基づくJackson @JsonIgnoreフィールド

リクエストを行ったユーザーの春のセキュリティロールに基づいて、いくつかのドメインオブジェクトまたはDTOフィールドをフィルタリングする必要があります。私は、リソースにアクセスしようとするユーザーのSpring GrantedAuthoritiesロールに基づいて、特定のクラスフィールドを直列化することを許可または禁止するために、JSON出力をフィルタリングするようにします。

異なるビューの組み合わせごとに新しいDTOを作成することはできません。混乱するからです。私はこの解決策を発見した

:ときに最初のユーザーログイン
Spring 3.2: Filtering Jackson JSON output based on Spring Security role
をしかし、それは動作しません、フィルターは一度だけ適用されます。他のすべてのユーザーは、役割が何であっても同じフィルタリングを取得します。

私はこのブログの記事にレイオランダよりも良い私の問題を説明することはできません。
http://jackson-users.ning.com/forum/topics/jackson-custom-serialization
これは私が数日間解決しようとしている正確に同じ問題です。

私は今までそれを行うためのきれいな方法を見つけることができませんでした。

+0

異なるビューで複数のマッパーを作成する – Shashank

答えて

0

それは@JsonViewが十分でない場合、簡単な解決策はありませんスプリングプロジェクト(example

@JsonViewを使用することをお勧めします。 @JsonIgnoreProperties@JsonFilterを実装する特定のクラス(インターフェイス)を定義することは避けられません(を参照してください)

関連する問題