1.spring security简介
Spring Security 是基于 Spring 的身份认证(Authentication)和用户授权(Authorization)框架,提供了一
套 Web 应用安全性的完整解决方案。其中核心技术使用了 Servlet 过滤器、IOC 和 AOP 等
<!-- spring security 启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2.身份认证方式
2.1 httpBasic方式认证
内存存储认证信息
@Configuration
@Slf4j
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
public UserDetailsService userDetailsService() {
log.info("init userDetailsService============");
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
manager.createUser(
User.withDefaultPasswordEncoder().username("summit").password("password").roles("user")
.build());
return manager;
}
@Override
public void configure(WebSecurity web) throws Exception {
super.configure(web);
}
/**
* 1.资源权限配置(过滤器链)
*
* @param http
* @throws Exception
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().and()
//认证请求
.authorizeRequests()
//所有认证进入应用的http请求都要进行认证
.anyRequest().authenticated();
}
}

输入密码登陆成功
2.2 HttpForm 表单认证方式
http
/// 表单认证
.formLogin()
.and()
//认证请求
.authorizeRequests()
//所有认证进入应用的http请求都要进行认证
.anyRequest().authenticated();

2.3 底层实现
graph TB
UsernamePasswordAuthenticationFilter请求中包含用户名和密码,认证成功标记认证成功,否则进入下一个认证过滤器-->a("BasicAuthenticationFilter请求头有basic开头的信息,base64解码认证后")
a-->b("其它认证过滤器")
b-->c("ExceptionTranslationFilter捕获异常后处理")
c-->d("FilterSecurityInterceptor 认证通过后 根据资源权限配置来判断是否可以访问对应资源")
d-->controller

网友评论