2

我是 Java Spring Boot 的新手,并尝试学习 Spring Security。我在此开发了一个项目,登录时遇到此错误:无法将类 com.sun.proxy.$Proxy107 强制转换为类 com.security.domain.User (com.sun.proxy.$Proxy107 和 com.security. domain.User 位于加载程序“app”的未命名模块中)我的 UserService 类:

@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {

    private final UserRepository userRepository;
    private final PasswordEncoder passwordEncoder;

    @Override
    public void add(User user) {
        user.setPassword(passwordEncoder.encode(user.getPassword()));
        user.getRoles().add(Role.USER);
        userRepository.save(user);
    }

    @Override
    public List<User> findAll() {
        return userRepository.findAll();
    }

    @Override
    public void deleteById(Integer userId) {
        userRepository.deleteById(userId);
    }

和我的配置类:

@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {

    private final UserDetailsService userDetailsService;



    @Bean
    public PasswordEncoder passwordEncoder(){
        //NoOpPasswordEncoder.getInstance();
        return new BCryptPasswordEncoder();
    }
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth
                .userDetailsService(userDetailsService)
                .passwordEncoder(passwordEncoder());
    }
    @Override
    public void configure(WebSecurity web) throws Exception {
        web
                .debug(true)
                .ignoring()
                .antMatchers("/h2-console/**", "/css", "/swagger");
    }



    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf()
                .disable()
                .authorizeRequests()
                .antMatchers("/register/**")
                .permitAll()
                .antMatchers("/")
                .authenticated()
                .antMatchers("/delete/**")
                .hasAuthority(Role.ADMIN.getAuthority())
                .anyRequest()
                .authenticated()
                .and()
                .formLogin();
    }
}

当我的用户名正确时会出现此错误。我怎么解决这个问题?

4

0 回答 0