我在String
List
从对象Collection
中的角色中获取用户角色时遇到问题User
。我想获取用户角色以在我的 on方法中List
实现它,在该方法中,我将角色名称作为列表传递给类以使社交登录可用。将不胜感激的解决方案。UserServiceImlementation
loadUserByUsername
SocialUserDetailsImplementation
用户服务实现:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException {
User user = userRepository.findByUserName(userName);
if (user == null) {
throw new UsernameNotFoundException("Invalid username or password.");
}
List<String> roleNames = (Collectors.toList(user.getRoles()));
List<GrantedAuthority> grantList = new ArrayList<GrantedAuthority>();
if (roleNames != null) {
for (String role : roleNames) {
GrantedAuthority authority = new SimpleGrantedAuthority(role);
grantList.add(authority);
}
}
SocialUserDetailsImpl userDetails = new SocialUserDetailsImpl(user, roleNames);
return userDetails;
}
SocialUserDetailsImpl:
public class SocialUserDetailsImpl implements SocialUserDetails {
private static final long serialVersionUID = 1L;
private List<GrantedAuthority> list = new ArrayList<GrantedAuthority>();
private User user;
public SocialUserDetailsImpl(User user, List<String> roleNames) {
this.user = user;
for (String roleName : roleNames) {
GrantedAuthority grant = new SimpleGrantedAuthority(roleName);
this.list.add(grant);
}
}
@Override
public String getUserId() {
return this.user.getUserId() + "";
}
@Override
public String getUsername() {
return user.getUserName();
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return list;
}
@Override
public String getPassword() {
return user.getPassword();
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
慕的地10843
胡说叔叔
慕后森
相关分类