我对 SpringSecurity的理解就是各种的过滤器
1、JWT
理论讲解已经很多了,也就不复制粘贴别人写的东西了
官网: https://jwt.io/
2、SpringSecurity
现在的状态是会用,但是不太能讲清楚这是啥
3、代码
https://gitee.com/fyhcug/spring-security-jwt (自己根据很多教程写的 demo)
如果会用一点 SpringSecurity 的话各种拦截过程应该很明了了,不会的话,建议每个方法打断点执行一遍
4、过程和效果
4.1 通过登录获取 token
注:这里要求账号密码相同,否则会出错
原因:CustomUserDetailsServiceImpl 中,密码是根据用户名加密的
4.2 不携带 token 访问接口
4.3 携带 token 访问 Controller 中的接口(token放在请求头或请求体中)
如果把 token 删除后发现还是能访问,是因为 session 的问题
// 禁用 session
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
4.4 如果想增加什么拦截器,只需要在 Config 下面的配置类中添加即可
4.5 自定义加密规则
配置类中,替换成自定义的密码类即可