有没有办法撤销弹簧安全角色?具体来说,我想从UserDetails.getAuthorities()
对象中删除元素
Collection<? extends GrantedAuthority> authorities = userDetails.getAuthorities();
authorities.remove(new SimpleGrantedAuthority("ROLE_TO_BE_REMOVED"));
此代码将成功编译,但会UnsupportedOperationException
在调用 remove 时抛出。问题是标准的 Authentication 实现确保 getAuthorities 返回的 Collection 是不可修改的(它返回Collections $UnmodifiableRandomAccessList<E>
)。
所以我需要的是其他一些删除角色的方法,或者绕过集合不变性的方法。
使用的 Spring 版本:3.2.2.RELEASE,Spring 安全版本:3.1.3.RELEASE