系列三、Spring Security中自定义用户名/密码
一、Spring Security中自定义用户名/密码
1.1、自定义用户名/密码
1.1.1、配置文件中配置
spring.security.user.name=root
spring.security.user.password=123456
1.1.2、定义基于内存的用户
/*** @Author : 一叶浮萍归大海* @Date: 2024/1/11 21:50* @Description:*/
@Configuration
public class MyWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {/*** 密码加密器* @return*/@BeanPasswordEncoder passwordEncoder() {return NoOpPasswordEncoder.getInstance();}/*** 配置基于内存的用户* @param auth* @throws Exception*/@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication().withUser("admin").password("123456").roles("admin").and().withUser("root").password("123456").roles("root");}}
1.1.3、基于UserDetailService接口定义用户
概述:
Spring Security支持多种数据源,例如内存、数据库、LDAP等,这些不同来源的数据被共同封装成了UserDetailService接口,换句话说任何实现了UserDetailService接口的对象都可以作为认证数据源,因为我们还可以通过重写WebSecurityConfigurerAdapter 中的 userDetailsService 方法来提供一个 UserDetailService 实例进而配置多个用户,如下:
/*** 密码加密器* @return*/
@Bean
PasswordEncoder passwordEncoder() {return NoOpPasswordEncoder.getInstance();
}/*** 根据UserDetailsService定义基于内存的用户* @return*/
@Bean
protected UserDetailsService userDetailsService() {InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();manager.createUser(User.withUsername("admin").password("123456").roles("admin").build());manager.createUser(User.withUsername("root").password("123456").roles("root").build());return manager;
}