为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我不能禁用 spring boot 自动生成的密码和用户?

为什么我不能禁用 spring boot 自动生成的密码和用户?

尚方宝剑之说 2022-12-15 16:55:10
我正在启动一个新的 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();    }}
查看完整描述

1 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

由于您使用的是 WebFlux 而不是 Spring MVC,因此您必须使用WebFlux Security。

要禁用 SpringBoot 配置的默认用户和密码,您必须改为实现ReactiveUserDetailsService


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信