前后端基于json进行交互,接口通过JWT无状态token进行权限校验
- 登录时,密码验证通过,取当前时间戳生成签名Token,放在Response Header的Authorization属性中,同时在缓存中记录值为当前时间戳的RefreshToken,并设置有效期
- 客户端请求每次携带Token进行请求
- 服务端每次校验请求的Token有效后,同时比对Token中的时间戳与缓存中的RefreshToken时间戳是否一致,一致则判定Token有效
- 当请求的Token被验证时抛出TokenExpiredException异常时说明Token过期,校验时间戳一致后重新生成Token并调用登录方法
- 每次生成新的Token后,同时要根据新的时间戳更新缓存中的RefreshToken,以保证两者时间戳一致
shiro 配置可以去网上查资料,这里不再赘述
采用JWT有效期内刷新Token方案,解决并发请求问题
为避免多个请求同一时间分别生成不同的Token,我们引入redis锁机制。即我们的目的是同一个用户同一时间的不同请求,只允许获得锁的请求进行令牌刷新,其他的请求因为是在令牌有效期因此直接放行
![f4397c50c486415f37baef2d3059299e.png](https://i-blog.csdnimg.cn/blog_migrate/5a2ed739d0646a918e1ac4583fe805d5.jpeg)
后台管理界面如下:
![52293f86019dfeb96b184e03c2457899.png](https://i-blog.csdnimg.cn/blog_migrate/3f93085338fdcf8cadee84ae85d3499b.jpeg)
![72e51225718f90780df948f3b554bafb.png](https://i-blog.csdnimg.cn/blog_migrate/0cdb99e0c50a339ea2c0a23adc6ed603.jpeg)
![cb66ff66dca869e3ccc554b7839d6636.png](https://i-blog.csdnimg.cn/blog_migrate/68f49d60aaca3995b89325c24ce2b66d.jpeg)
![6eba585ffddd6db149b035b5c256024b.png](https://i-blog.csdnimg.cn/blog_migrate/39647e8e96682d693f22f9d64a02c47e.jpeg)
![44a92a04316914615b4cf2b920483a2f.png](https://i-blog.csdnimg.cn/blog_migrate/bed5bc9ff6b22178e4ef27ed7192f2df.jpeg)
小程序前端界面如下:
![d72bd045f4512e8c559f86430d45312b.png](https://i-blog.csdnimg.cn/blog_migrate/c25447fd0041df16fd928afbc691c9db.jpeg)
![f001d69b6ab72c098dda3a416d884748.png](https://i-blog.csdnimg.cn/blog_migrate/207aec1b87d28f47b7ec35f601e568ea.jpeg)
![18ebcd2839b7ddc71d5fee0b304cf350.png](https://i-blog.csdnimg.cn/blog_migrate/0b4301e3283c9ac176e2d1d171e35ef9.jpeg)
![a672cbaeebf4d8a8597d85f9528bad17.png](https://i-blog.csdnimg.cn/blog_migrate/2615aa1ea1779985985cfaf7b157f9dd.jpeg)
![8830349889326f8911a329ab58f8a3a4.png](https://i-blog.csdnimg.cn/blog_migrate/72ced3a3605d0b754e77c1ff4374ba1f.jpeg)
![4687013905b44c14d1f5771d0ee4d069.png](https://i-blog.csdnimg.cn/blog_migrate/eb5a98778f3e612b5a58ff034964594e.jpeg)
![e31e342ebaa073d12ec9260fab000f35.png](https://i-blog.csdnimg.cn/blog_migrate/e3123a1065e8930434f93eb7f075abb5.jpeg)
![4b95f227bdee1e0c4cb87f2f922a3989.png](https://i-blog.csdnimg.cn/blog_migrate/a83762462fc741ca3e20600cb15cf9fc.jpeg)
![81f70db99c314ed6885360838754ac58.png](https://i-blog.csdnimg.cn/blog_migrate/4c04854ac0ec1f6cd8bb493c7ff44106.jpeg)
![9e6ba9c44393b52989c694124ee1f5c3.png](https://i-blog.csdnimg.cn/blog_migrate/1fabd5b4d319c5b26178e67c4b0e7774.jpeg)
![4fb4d985b55c51f947472dc29cc870c5.png](https://i-blog.csdnimg.cn/blog_migrate/5c490ca24541c16a9c7706ab7c412159.jpeg)
欢迎大家评论,对这项目感兴趣的朋友可以私信给我