spring security基于配置的账号密码
文档
- 00 - spring security框架使用
- 01 - spring security自定义登录页面
yml文件中配置账号密码
spring:security:user:name: adminpassword: 123456
- yml文件中配置账号密码后,控制台将不再输出临时密码
基于内存的账号密码
调整配置类WebSecurityConfig.java
package xin.yangshuai.springsecurity03.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
import org.springframework.security.config.annotation.web.configurers.FormLoginConfigurer;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.SecurityFilterChain;@Configuration
public class WebSecurityConfig {@Beanpublic UserDetailsService userDetailsService() {InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();manager.createUser(User.withDefaultPasswordEncoder().username("user").password("password").roles("USER").build());return manager;}@Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception {http.authorizeRequests(new Customizer<ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry>() {@Overridepublic void customize(ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry expressionInterceptUrlRegistry) {expressionInterceptUrlRegistry.anyRequest().authenticated();}});http.formLogin(new Customizer<FormLoginConfigurer<HttpSecurity>>() {@Overridepublic void customize(FormLoginConfigurer<HttpSecurity> httpSecurityFormLoginConfigurer) {httpSecurityFormLoginConfigurer.loginPage("/login").permitAll();httpSecurityFormLoginConfigurer.usernameParameter("myusername");httpSecurityFormLoginConfigurer.passwordParameter("mypassword");httpSecurityFormLoginConfigurer.failureUrl("/login?error");}});return http.build();}
}
- 创建一个类型为
UserDetailsService
的Bean,实现类InMemoryUserDetailsManager
可直接配置账号密码 - 此时yml配置文件中的用户名和密码将不可用
- 基于数据库的账号密码,也是在自定义的
UserDetailsService
实现类中,实现登录认证