在 Spring Security 中将 List<Authority> 转换为 Collection<GrantedAuthority>

Mah*_*leh -1 java spring-security

我的情况是,我有一个采用 Collection 的方法,当我尝试将列表值添加到集合参数中时,我将该值作为列表,但它不起作用,所以我应该转换它吗?

更新: 当我尝试创建时:

new org.springframework.security.core.userdetails.User(
                user.getEmail(), user.getPassword(), true, true, true, true,
                user.getAuthorities());
Run Code Online (Sandbox Code Playgroud)

其中 user.getAuthorities() 返回我定义的 Authority 对象的数组列表

上面的代码给出了构造函数未定义的错误,当我添加集合转换时它工作正常。

org.springframework.security.core.userdetails
类用户

构造函数

User(java.lang.String username, java.lang.String password, 
boolean enabled, boolean accountNonExpired, 
boolean credentialsNonExpired, boolean accountNonLocked, 
java.util.Collection<? extends GrantedAuthority> authorities) 
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 5

User 构造函数javadoc告诉您最后一个参数必须是Collection<? extends GrantedAuthority>. 因此,如果 ArrayList 是ArrayList<Something>, where SomethingisGrantedAuthority或实现GrantedAuthority.

您仍然没有告诉我们方法返回的确切类型是什么user.getAuthorities()。你了解泛型吗?你读过关于泛型Java 教程吗?