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 方法 :對用戶的身份進行配置