springboot整合springsecurity认证流程
时间: 2023-08-10 20:40:07 浏览: 140
好的,下面是SpringBoot整合SpringSecurity的认证流程:
1. 引入依赖
在 `pom.xml` 文件中添加 Spring Security 相关的依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
```
2. 配置安全规则
在 `application.yml` 或 `application.properties` 文件中配置安全规则:
```
spring:
security:
user:
name: admin
password: admin
# 需要放行的请求路径
ignored: /css/**,/js/**,/images/**
```
3. 创建安全配置类
创建一个继承 `WebSecurityConfigurerAdapter` 的安全配置类,并重写 `configure(HttpSecurity http)` 方法,配置安全规则。
```
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// 配置安全规则
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasAnyRole("ADMIN", "USER")
.anyRequest().authenticated()
.and()
.formLogin().loginPage("/login").permitAll()
.and()
.logout().permitAll();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
// 配置用户信息
auth.inMemoryAuthentication()
.withUser("admin").password("{noop}admin").roles("ADMIN")
.and()
.withUser("user").password("{noop}user").roles("USER");
}
}
```
在上面的代码中,`configure(HttpSecurity http)` 方法配置了三个安全规则:
- `/admin/**` 路径需要 `ADMIN` 角色才能访问
- `/user/**` 路径需要 `ADMIN` 或 `USER` 角色才能访问
- 其他路径需要认证后才能访问
`configureGlobal(AuthenticationManagerBuilder auth)` 方法配置了两个用户 `admin` 和 `user`,并分别赋予了 `ADMIN` 和 `USER` 角色。
4. 启动应用程序
现在可以启动应用程序,访问 `/login` 路径进行登录,登录成功后就可以访问需要认证的路径。
阅读全文