一.引入原因
1.默认配置下:账号只有一个,且密码每次启动都不一样
2.前后端分离项目中,采用post请求调用/login接口
二.前置工作
引入Spring Security依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
三.自定义UserDetailsService实现多账号和多密码
@Configuration
public class SecurityConfig {
//配置Security过滤链
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
//配置哪些接口需要认证(.anyRequest().authenticated()代表任何请求都需认证)
http.authorizeHttpRequests(authorize -> authorize.anyRequest().authenticated());
//配置post表单请求/login接口
http.formLogin(Customizer.withDefaults());
//csrf攻击:开发环境可不配方便调试,上线环境需配置,否则会遭csrf攻击
http.csrf(AbstractHttpConfigurer::disable);
//返回Security过滤链对象
return http.build();
}
//自定义UserDetailsService实现多账号
@Bean
public UserDetailsService userDetailsService() {
//基于内存的用户信息 {noop}代表没有采取加密方式
UserDetails user1 = User.withUsername("user1").password("{noop}123456").build();
UserDetails user2 = User.withUsername("user2").password("{noop}password").build();
return new InMemoryUserDetailsManager(user1, user2);
}
}
四.结果


1285

被折叠的 条评论
为什么被折叠?



