2
스프링 보안 역할을 취소 할 수있는 방법이 있습니까? 특히, 나는 UserDetails.getAuthorities()
객체스프링 보안 역할을 제거
Collection<? extends GrantedAuthority> authorities = userDetails.getAuthorities();
authorities.remove(new SimpleGrantedAuthority("ROLE_TO_BE_REMOVED"));
이 코드가 성공적으로 컴파일됩니다에서 요소를 제거 할 만, 삭제가 호출 될 때 UnsupportedOperationException
발생합니다. 문제는 표준 인증 구현을 통해 getAuthorities가 반환하는 Collection을 수정할 수 없다는 것입니다 (Collections $UnmodifiableRandomAccessList<E>
반환).
그래서 내가 필요로하는 것은 다른 방식으로 역할을 제거하거나 컬렉션 불변성을 우회하는 방법입니다. 사용
봄 버전 : 3.2.2.RELEASE, 봄 보안 버전 : 3.1.3.RELEASE
글쎄, 여전히 UserDetails 객체에서 권한을 설정해야한다. – lolotron
바이 패스 무손실 솔루션으로 권한을 'ArrayList'에 넣을 수 있으므로 새로운 컬렉션에 복사 한 다음 역할을 제거한다. – Admit