前言
博主主要负责后端,因此前端基本照搬 https://blog.csdn.net/Dlihctcefrep/article/details/113591543的代码,后端也参照该博客中部分代码(他的博客后端源码:https://gitee.com/fang-jiale/blog)
一、前端部分
效果如下,基本是把博主的前端拿过来使用,因为es功能没有添加所以搜索功能没用上,然后音乐盒友链和后花园按钮对应功能关闭了。前端部分与参考博主不同的地方是我增加了只要权限足够就能管理其他用户(P6)。
二、后端部分
简介
- springboot+mybatis-plus+shiro+jwt+redis
- 后端源码:https://gitee.com/i_am_xiao_chu/springboot-blog
- 为每个用户分配token并存入redis
- 安全方面整合shiro
1.用户访问controller逻辑
新建一个jwtfilter类继承AuthenticatingFilter。
思路参考某破站视频教程,因为博客上的数据,游客也应该能访问,所以我设置若为游客(没有token)则在isAccessAllowed方法中返回true(即不进入onAccessDenied方法),然后获取进入controller,理论上除了需要登录才能进入的后台管理系统,基本上所有controller都能访问到,包括博客评论那块,但是这个问题前端已经解决了,故除了后台管理系统中的controller游客都能访问到,而后台管理系统,则要执行登录后才能进入并执行里面的方法,但理论上游客模式应该也能强行访问,只是后端部分报错,因为我没在后端代码处设置需要登录才能进入。
2.关于shiro与redis
shiro配置基本大同小异,区别可能就在realm
登录只是简单判断了该用户是否存在与状态是否被锁了,然后就执行登录了。然后redis在shiro的配置中进行缓存配置,每个用户登录都会生成一个token,然后以token-自定义myprofiles类型(对应key-value)存入redis的authencation哈希表里,同时对该token设置了过期时间,当该token过期或者执行了logout的时候该token会被移除。
但是因为太懒的原因,存在redis暂时没有太大用处。除此之外应该用在redis上的点赞功能还没上线。