ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

系列三、Spring Security中自定义用户名/密码

2026/8/5 8:34:04 拓冰建站 浏览量
系列三、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;
}