2
有沒有辦法撤銷春季安全方面的作用?具體而言,我想從UserDetails.getAuthorities()
對象拆卸彈簧安全角色
Collection<? extends GrantedAuthority> authorities = userDetails.getAuthorities();
authorities.remove(new SimpleGrantedAuthority("ROLE_TO_BE_REMOVED"));
這個代碼可以編譯成功刪除元素,但會拋出UnsupportedOperationException
刪除時被調用。問題是,標準的認證實現確保由getAuthorities返回的集合是不可修改的(它返回Collections $UnmodifiableRandomAccessList<E>
)。
所以我需要的是一些其他的方式來刪除角色,還是有辦法繞過集合不變性。使用
Spring版本:3.2.2.RELEASE,春季安全版本:3.1.3.RELEASE
嗯,我還需要設定當局UserDetails對象 – lolotron
作爲旁路不變性的解決方案,你可以把你的當局'ArrayList',因此他們將被複制到新的集合,然後刪除角色。 – Admit