SpringSecurity(安全框架)

简介

SpringSecurity是针对spring项目的安全框架,也是springboot底层安全默认的技术选型,它可以实现强大的web安全控制,我们仅需要引入spring-boot-starter-security模块,进行少量但是配置,即可实现强大的安全管理。

常用的类

​ WebSecurityConfigurer:自定义Security策略

​ AuthenticationManagerBuilder:自定义认证策略

​ @EnableWebSecurity:开启WebSecurity模式

步骤

导入依赖

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

配置

1
2
3
4
5
6
7
8
9
//这是一个固定的架子模式
@EnableWebSecurity
public class WebConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
}
}

详细配置,授权模式

1
2
3
4
5
6
7
8
9
10
11
12
@Override
protected void configure(HttpSecurity http) throws Exception {
//现在我们定义仅仅首页可以直接访问
http.authorizeHttpRequests().antMatchers("/").permitAll()
//现在我们定义部门页面只有vip角色可以进行访问
.antMatchers("department/**").hasRole("zss");
//认证失败在,则跳转到发送/login请求,跳转到login页面
http.formLogin();

//注销功能
http.logout();
}

image-20220523151019636

image-20220523151107677

虽然拦截器也可以做到这种功能,但是拦截器功能比较麻烦,而且代码繁琐,我们来看一拦截器实现的代码

1
2
3
4
5
6
@Override
public void addInterceptors(InterceptorRegistry registry) {
//这里是登录页面访问的拦截器
registry.addInterceptor( loginHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/index","/login","/js/**","/css/**");
//这里是权限控制的拦截器,具体的拦截内容就不再进行展示 registry.addInterceptor(authorizationInterceptor()).addPathPatterns("/**").excludePathPatterns("/index","/login","/js/**","/css/**");
}

认证模式

1
2
3
4
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("zss").password("200101").roles("zss");
}