spring security基于配置的账号密码
文档
00 - spring security框架使用 01 - spring security自定义登录页面
yml文件中配置账号密码
spring :
security :
user :
name : admin
password : 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 {
@Bean
public UserDetailsService userDetailsService ( ) {
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager ( ) ;
manager. createUser ( User . withDefaultPasswordEncoder ( ) . username ( "user" ) . password ( "password" ) . roles ( "USER" ) . build ( ) ) ;
return manager;
}
@Bean
public SecurityFilterChain filterChain ( HttpSecurity http) throws Exception {
http. authorizeRequests ( new Customizer < ExpressionUrlAuthorizationConfigurer < HttpSecurity > . ExpressionInterceptUrlRegistry> ( ) {
@Override
public void customize ( ExpressionUrlAuthorizationConfigurer < HttpSecurity > . ExpressionInterceptUrlRegistry expressionInterceptUrlRegistry) {
expressionInterceptUrlRegistry
. anyRequest ( )
. authenticated ( ) ;
}
} ) ;
http. formLogin ( new Customizer < FormLoginConfigurer < HttpSecurity > > ( ) {
@Override
public 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
实现类中,实现登录认证