构造函数SimpleGrantedAuthority(Set )未定义这是错误

问题描述 投票:0回答:1

我在编码时遇到错误请任何人都可以解决此错误它的显示更改为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;
    }
}
java maven spring-boot
1个回答
0
投票

由于SimpleGrantedAuthority构造函数接受StringSimpleGrantedAuthority(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

© www.soinside.com 2019 - 2024. All rights reserved.