Spring Security 介绍
Spring Security 是一个开源的安全框架,负责对web应用进行保护。
Spring Security 简单原理
- 身份认证机构-负责对资源访问身份的检验
- 控制机构-负责控制可以访问的身份
- 拦截器-执行身份认证机构和控制机构制定的规则
FilterSecurityInterceptor等是对AbstractSecurityInterceptor(拦截器)的具体实现
集成Spring Security
引入pom.xml依赖
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
在/src/main/java/com.example.demo下新建一个包security
在包下新建一个类 WebSecurityConfig
/**
* 描述:Security 配置类
* @author wangyu
* @date 2019/5/19
*/
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
//路由策略和访问权限的简单配置
http
.formLogin() //启用默认登录页面
.failureForwardUrl("/login") //登录失败返回url
.defaultSuccessUrl("/User/test") //登录成功跳转
.permitAll() ; //登录页面全部可以访问
super.configure(http);
}
/**
* 描述:配置内存用户
* @param auth
* @throws Exception
*/
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("唐伯虎").password("123456").roles("ADMIN")
.and()
.withUser("秋香").password("123456").roles("USER");
}
@SuppressWarnings("deprecation")
@Bean
public static NoOpPasswordEncoder passwordEncoder() {
return (NoOpPasswordEncoder) NoOpPasswordEncoder.getInstance();
}
}
@EnableWebSecurity 开启Security框架
configuration 方法 :重写父类的方法,配置权限控制
configurationGlobal 方法 :对用户的身份进行配置