一个包含用户权限的 Oauth2Authentication 对象。当我想获得它的权限并将其设置为 User 对象的权限时,如下所示:OAuth2Authentication oAuth2Authentication = (OAuth2Authentication) SecurityContextHolder.getContext().getAuthentication();LinkedHashMap linkedHashMap = (LinkedHashMap) oAuth2Authentication.getUserAuthentication().getDetails();user.setAuthorities((Set<GrantedAuthority>) oAuth2Authentication.getAuthorities());引发以下异常:java.lang.ClassCastException:java.util.Collections$UnmodifiableRandomAccessList 无法转换为 java.util.Set我如何解决它?注意:用户对象的权限类型是Set<GrantedAuthority>
1 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
如果oAuth2Authentication.getAuthorities()
是 a List
,您可以轻松地从中创建 a Set
:
user.setAuthorities(new HashSet<GrantedAuthority>(oAuth2Authentication.getAuthorities()));
请注意,GrantedAuthority
应该正确实现hashCode()
andequals()
才能用作 a 的成员HashSet
。
添加回答
举报
0/150
提交
取消