1.简介
一个能够为基于Spring的企业应用系统提供声明式的安全訪问控制解决方式的安全框架(简单说是对访问权限进行控制嘛),应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。
2.环境搭建
- 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
- config
@EnableWebSecurity
public class SercurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure (HttpSecurity http) throws Exception{
super.configure(http);//调用父类方法
}
}
3.用户认证
@Override
protected void configure (AuthenticationManagerBuilder auth) throws Exception{
auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
.withUser("mingiao").password(new BCryptPasswordEncoder().encode("123456")).roles("vip2","vip3")
.and()
.withUser("root").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1","vip2","vip3")
.and()
.withUser("guest").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1");
}
- passwordEncoder:设置密码编码,对密码加密处理,增加安全性。
- withUser:认证用户
- password:密码
- roles:用户权限
4.用户授权
@Override//重写父类方法
protected void configure (HttpSecurity http) throws Exception{
http.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/level1/**").hasRole("vip1")
.antMatchers("/level2/**").hasRole("vip2")
.antMatchers("/level3/**").hasRole("vip3");
http.formLogin();
http.csrf().disable();//关闭csrf功能
http.logout().logoutSuccessUrl("/");//登出
http.rememberMe().rememberMeParameter("remeber");//记住我
}
- antMatchers:设置权限的相应路径
- permitAll:所有人可以访问
- hasRole:设置指定的访问权限
- formLogin:返回登录(没有权限时默认)