복붙노트

[SPRING] Spring 보안 역할에 기반한 Jackson @JsonIgnore 필드

SPRING

Spring 보안 역할에 기반한 Jackson @JsonIgnore 필드

모든 Spring REST 웹 응용 프로그램에는 도메인 객체와 DTO가 많이 있습니다.

요청을하는 사용자의 스프링 보안 역할을 기반으로 일부 도메인 개체 또는 DTO 필드를 필터링해야합니다. JSON 출력을 필터링하여 리소스에 액세스하려는 사용자의 Spring GrantedAuthorities 역할을 기반으로 특정 클래스 필드를 직렬화하도록 허용하거나 거부하도록합니다.

모든 다른 뷰 조합에 대해 새 DTO를 만들 수는 없기 때문에 엉망이됩니다.

나는이 해결책을 발견했다. Spring 3.2 : Spring Security 역할에 기반한 Jackson JSON 출력 필터링 그러나 작동하지 않습니다. 필터는 첫 번째 사용자가 로그인 할 때 한 번만 적용됩니다. 그런 다음 다른 모든 사용자는 역할이 무엇이든 상관없이 동일한 필터링을 얻습니다.

이 블로그 게시물에 레이 홀랜드보다 내 문제를 더 잘 설명 할 수는 없습니다. http://jackson-users.ning.com/forum/topics/jackson-custom-serialization 이것은 내가 며칠 동안 풀려고하는 것과 똑같은 문제입니다.

지금까지 깨끗한 방법을 찾을 수 없었습니다.

해결법

  1. ==============================

    1.스프링 프로젝트에서 @JsonView를 사용하는 것이 더 좋습니다 (예).

    스프링 프로젝트에서 @JsonView를 사용하는 것이 더 좋습니다 (예).

    @JsonView가 충분하지 않으면 쉬운 해결책이 아닙니다. @JsonIgnoreProperties 및 @JsonFilter를 구현하기 위해 특정 클래스 (인터페이스)를 정의하는 것은 피할 수없는 일입니다 ( 잭슨 : 조건부로 개체 건너 뛰기)

  2. from https://stackoverflow.com/questions/35558218/jackson-jsonignore-fields-based-on-spring-security-roles by cc-by-sa and MIT license