3

春のセキュリティロールを取り消す方法はありますか? UserDetails.getAuthorities()具体的には、オブジェクトから要素を削除したい

Collection<? extends GrantedAuthority> authorities = userDetails.getAuthorities();
authorities.remove(new SimpleGrantedAuthority("ROLE_TO_BE_REMOVED"));

このコードは正常にコンパイルされますがUnsupportedOperationException、remove が呼び出されるとスローされます。問題は、標準の Authentication 実装が getAuthorities によって返されるコレクションが変更不可能であることを保証することです (それは を返しますCollections $UnmodifiableRandomAccessList<E>)。

したがって、役割を削除する別の方法、またはコレクションの不変性をバイパスする方法が必要です。

使用した Spring バージョン: 3.2.2.RELEASE、Spring セキュリティ バージョン: 3.1.3.RELEASE

4

2 に答える 2