spring-boot-starter-security 配置
时间: 2023-09-02 12:15:50 浏览: 113
Spring Security 配置
在 Spring Boot 项目中使用 Spring Security,需要添加 spring-boot-starter-security 依赖。以下是一个简单的配置示例:
1. 添加依赖
在 pom.xml 文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
```
2. 配置权限
在 Spring Security 中,权限(Authority)是指用户可以执行的操作。可以通过配置权限来限制用户的访问。
```
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasAnyRole("ADMIN", "USER")
.antMatchers("/**").permitAll()
.and().formLogin()
.and().logout().logoutSuccessUrl("/login?logout");
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("admin").password("{noop}admin123").roles("ADMIN")
.and()
.withUser("user").password("{noop}user123").roles("USER");
}
}
```
在上面的配置中,我们定义了三个权限:
- /admin/**:只有 ADMIN 角色的用户可以访问
- /user/**:只有 ADMIN 或 USER 角色的用户可以访问
- /**:所有用户都可以访问
最后,我们使用 inMemoryAuthentication() 方法来定义两个用户和它们的角色。
3. 配置登录和退出
在上面的配置中,我们使用 formLogin() 方法来配置登录页面和处理登录请求的 URL。同时,我们也使用 logout() 方法来配置退出登录的 URL 和成功退出后的跳转页面。
```
.and().formLogin()
.and().logout().logoutSuccessUrl("/login?logout");
```
这里我们配置了退出登录后跳转到登录页面,并添加了一个参数表示已经退出登录。
4. 配置 CSRF
在 Spring Security 中,默认开启了 CSRF(Cross-site Request Forgery)保护,可以有效防止跨站点攻击。如果你的应用程序不需要 CSRF 保护,可以通过以下配置关闭:
```
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
}
}
```
5. 配置 HTTPS
在 Spring Security 中,可以通过以下配置开启 HTTPS 支持:
```
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requiresChannel()
.anyRequest().requiresSecure();
}
}
```
以上就是使用 spring-boot-starter-security 进行 Spring Security 配置的示例。
阅读全文