我正在啟動一個新的 spring boot 項目,希望在 Spring Security 中禁用自動配置的用戶,我嘗試了很多配置但都沒有用,我不知道我缺少什么??。?!如您所見,我正在使用spring boot 2.1.5和web flux、security、mongo、actuator為了禁用自動用戶配置,我嘗試實現自己的UserDetailService安全性,如下所示@Configuration@EnableWebSecuritypublic class SecurityConfigurer extends WebSecurityConfigurerAdapter { private UserDetailsService userDetailsService; private PasswordEncoder passwordEncoder; public SecurityConfigurer(EsportUserDetailService userDetailsService, PasswordEncoder passwordEncoder) { this.userDetailsService = userDetailsService; this.passwordEncoder = passwordEncoder; } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder); } @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers("/").permitAll() .and() .authorizeRequests().anyRequest().authenticated(); }}@SpringBootApplication(exclude = SecurityAutoConfiguration.class)public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}public class EsportUserDetailService implements UserDetailsService { @Autowired private UserRepository userRepository; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { Optional<User> userFindByUsername = userRepository.findByUsername(username); User user = new User(); if (userFindByUsername.isPresent()) user = userFindByUsername.get(); return new EsportPrincipal(user); }}@Configurationpublic class BeansConfig{ @Bean public PasswordEncoder getPasswordEncoding(){ return new BCryptPasswordEncoder(); } @Bean public EsportUserDetailService getEsportUsersDetailSericeImplementation(){ return new EsportUserDetailService(); }}
添加回答
舉報
0/150
提交
取消