b站学习三更草堂springsecurity的笔记
相关代码笔记源自b站up主三更草堂,up估计参考了若依.讲的很好,大家想要深入了解可以去一键三连,可以去加群获取笔记
SpringBoot前后端分离项目实战-博客项目-Java项目
SpringSecurity框架教程-Spring Security+JWT实现项目级前端分离认证授权
我这就不废话了,估计各位也不想了解太深.这里我整合springboot,直接提供视频里demo.
clone下来应该可以直接跑起来.稍微改一下就可以加入到自己的项目里.具体代码实现原理可以去看视频.这里默认读者对jwt与security都有一点点概念
demo地址
认证
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
后面会依次讲到
我这里不讲原理,只讲讲流程
- 这里框起来的地方只需要传入前端传来的用户名密码,会得出一个authenticate,若为空,就是账户错误,不需要自己去匹配.只需要传入用户名和密码,然后在后面的类UserDetailsServiceImpl查出用户数据就行,校验工作springsecurity帮我门完成.不懂请继续往下看
- 注意我框起来的地方,这里实现了 UserDetails接口,而且将我们的user实体类注入,返回用户名密码,相当于把我们的user包装成springsecurity需要的样子
3.这里实现了UserDetailsService接口,返回的时我们之前包装的LoginUser类.此时你可以回去看第1,2点,猜测为什么可以不用我们自己校验账户密码了.
以上就是基本使用了.
此时整合jwt
将jwt放入自定义过滤器
security本身就是一堆过滤器的组合,我们也需要在把自定义过滤器添加进去
认证就到此结束了
可以用postman测试一下,登出的时候需要在header加一个token字段
授权
前面有一个对权限信息的封装
首先,先把权限信息传入。
这里主要看这几个东西
1.在配置类里面加上EnableGlobalMethodSecurity(prePostEnable=true)使下面两个接口生效
@PreAuthorize()方法之前
@PostAuthorize()方法之后
这里使用自定义的方法,相比较SpringSecurity自带的方法而言,更加灵活。