重点:SpringSecurity的登录流程:
1.当一个请求到达Spring Security过滤器的时候,有一个过滤器叫做SecurityContextPersistneceFilter
2.当用户登陆成功的时候,会将当前用户登录的信息存储到SecurityContextHolder中,SecurityContextHolder的底层是一个ThreadLocal,当前用户的信息被存入到TreadLocal中,
3.在登录请求返回数据的时候,会经过SecurityContextPeristenceFilter过滤器链,在该过滤器中,会拿出来SecurityContextHolder中的用户信息,然后将之存入到HttpSession中,同时清除掉SecurityContextHolder中的用户信息。
4.接下来,当用户访问/HELLO的时候,也一样会进过SecurityContextPersistenceFilter,在该过滤器中,会从HttpSession中读取处理当前用户数据,并存入到SecurityContextHoler中,在接下来的各种认证和权限的判断中,都会从SecurityContextHolder中获取
一.简介
一个重量级的安全管理框架:
缺点
配置繁琐,(在SSM中,因为配置繁琐,所以Spring Security使用较少。但是 Spring Boot 中为Spring Security做了自动化配置,所以在Boot中,security使用非常多。)
概念繁琐
优点
安全,相对于shiro,考虑了各种网络攻击,不用开发者自己去考虑这些问题,十分安全
二.项目搭建
2.1.多加一个spring Security依赖而已
2.2.application.properties
application中配置一个固定的用户
spring.security.user.name=zhangsan
spring.security.user.password=123
2.3.启动SpringBoot访问登录界面(使用固定application用户)
这个页面spring security都帮你写好了,但是你也可以自己配置。
2.4自动接口保护(Filter默认过滤)
spring security就是只要你加入了依赖,项目里面所有的接口都被保护起来了
这个时候我们连接hello接口看看看一看
HelloController
package com.huang.springsecurity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
}
发现根本没办法连到hello界面,直接跳转到了登录界面,故此我们明白了,spring Security 只要配置了依赖就能直接对所有的接口进行保护。
3.如果不配置固定用户
如果不在application中配置固定用户(即没有连接数据库),spring Security中会给你一个默认的用户。
即用户名为user,密码为如上所叙