SpringBoot整合SpringSecurity+JWT(三更草堂)

b站学习三更草堂springsecurity的笔记
相关代码笔记源自b站up主三更草堂,up估计参考了若依.讲的很好,大家想要深入了解可以去一键三连,可以去加群获取笔记

SpringBoot前后端分离项目实战-博客项目-Java项目
SpringSecurity框架教程-Spring Security+JWT实现项目级前端分离认证授权

我这就不废话了,估计各位也不想了解太深.这里我整合springboot,直接提供视频里demo.
clone下来应该可以直接跑起来.稍微改一下就可以加入到自己的项目里.具体代码实现原理可以去看视频.这里默认读者对jwt与security都有一点点概念
demo地址

https://gitee.com/hwp_ing/git-test.git

认证

demo只提供登录登出两个方法

@RestController
public class BlogLoginController {
    @Autowired
    private BlogLoginService blogLoginService;

    @PostMapping("/login")
    public ResponseResult login(@RequestBody User user){
        return blogLoginService.login(user);
    }
    @PostMapping("/logout")
    public ResponseResult logout(){
        return blogLoginService.logout();
    }
}

主要关注这几个类
BlogLoginServiceImpl
UserDetailServiceImpl
LoginUser
后面会依次讲到


我这里不讲原理,只讲讲流程

  1. 这里框起来的地方只需要传入前端传来的用户名密码,会得出一个authenticate,若为空,就是账户错误,不需要自己去匹配.只需要传入用户名和密码,然后在后面的类UserDetailsServiceImpl查出用户数据就行,校验工作springsecurity帮我门完成.不懂请继续往下看
    SpringBoot整合SpringSecurity+JWT(三更草堂)_第1张图片
  2. 注意我框起来的地方,这里实现了 UserDetails接口,而且将我们的user实体类注入,返回用户名密码,相当于把我们的user包装成springsecurity需要的样子
    SpringBoot整合SpringSecurity+JWT(三更草堂)_第2张图片
    3.这里实现了UserDetailsService接口,返回的时我们之前包装的LoginUser类.此时你可以回去看第1,2点,猜测为什么可以不用我们自己校验账户密码了.SpringBoot整合SpringSecurity+JWT(三更草堂)_第3张图片
    以上就是基本使用了.
    此时整合jwt
    将jwt放入自定义过滤器
    SpringBoot整合SpringSecurity+JWT(三更草堂)_第4张图片
    security本身就是一堆过滤器的组合,我们也需要在把自定义过滤器添加进去
    SpringBoot整合SpringSecurity+JWT(三更草堂)_第5张图片
    认证就到此结束了
    可以用postman测试一下,登出的时候需要在header加一个token字段
    SpringBoot整合SpringSecurity+JWT(三更草堂)_第6张图片
    SpringBoot整合SpringSecurity+JWT(三更草堂)_第7张图片

授权

前面有一个对权限信息的封装
SpringBoot整合SpringSecurity+JWT(三更草堂)_第8张图片
首先,先把权限信息传入。
这里主要看这几个东西
1.在配置类里面加上EnableGlobalMethodSecurity(prePostEnable=true)使下面两个接口生效
@PreAuthorize()方法之前
@PostAuthorize()方法之后
这里使用自定义的方法,相比较SpringSecurity自带的方法而言,更加灵活。

你可能感兴趣的:(springboot基础知识,springboot脚手架,springboot入门项目,spring,boot,java,spring)