#java #spring-boot
#java #spring-boot
Вопрос:
Эта ошибка просто не позволяет мне запускать мою программу дальше. Как исправить эту проблему? Должен ли я добавить какие-либо другие библиотеки? Проблема связана с PasswordEncoder.
Ошибка:
Ошибка: (77, 52) java: не удается получить доступ к org.springframework.security.authentication.encoding.Файл класса PasswordEncoder для org.springframework.security.authentication.encoding.PasswordEncoder не найден
package com.example.attendance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/resources/**", "/registration","/img/**","/js/**","/css/**").permitAll()
.antMatchers("/").permitAll()
.antMatchers("/admin/**","/admin").access("hasRole('ADMIN')")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/")
.failureUrl("/login?error")
.permitAll()
.and()
.logout()
.permitAll();
}
@Bean
public AuthenticationManager customAuthenticationManager() throws Exception {
return authenticationManager();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
}
}
Комментарии:
1. Смотрите docs.spring.io/spring-security/site/docs/current/api/org /… . Вы используете неправильный пакет (при условии, что вы используете текущую версию spring security).
2. Используете ли вы maven? Если да, то что находится в вашем POM.
Ответ №1:
добавьте этот компонент authenticationmanager в этот класс
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}