我在编码时遇到错误请任何人都可以解决此错误它的显示更改为getRoles()返回字符串我改变了它但仍然是它的问题错误如果我在用户那里更改它会出错
package com.deevia.otpGenaration.otpGenaration.service;
import java.util.Arrays;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import com.deevia.otpGenaration.otpGenaration.model.User;
import com.deevia.otpGenaration.otpGenaration.repositories.UserRepository;
@Service
public class MyUserDetailsService {
@Autowired
private UserRepository userRepository;
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userRepository.findByUsername(username);
GrantedAuthority authority = new SimpleGrantedAuthority(user.getRoles());
UserDetails userDetails = (UserDetails) new org.springframework.security.core.userdetails.User(user.getUsername(),
user.getPassword(), Arrays.asList(authority));
return userDetails;
}
}
由于SimpleGrantedAuthority
构造函数接受String
:SimpleGrantedAuthority(java.lang.String role)
,因此出现该错误是正常的。
我不知道getRoles()
类的com.deevia.otpGenaration.otpGenaration.model.User
的返回类型是什么,但是如果它是一个String的集合你可以使用一个流来做映射user.getRoles().stream().map(SimpleGrantedAuthority::new).collect(java.util.stream.Collectors.toList());
并将它传递给UserDetails