ruoyi 中实现登陆在微信点击授权才可以跳转页面
需求来源
我现在这家的系统是面向一些喝茶部门使用的,所以保密性和安全性要求比较高(虽然我实现了也不咋地安全,重在能用),以往的登录功能都是直接用户登录即可(用的是ruoyi脚手架),对客户而言安全性不高,所以客户要求登陆的时候追加一些验证可以保证是本人登陆或者被授权登录达到安全。
需求分析
听起来实现难度不大(仅仅也是听起来,我没做过慌的一批,领导只给了2天),仔细的分析后发现,这不是就是某game类似那种游戏客户端,就算账号密码成功,也会卡在某一个页面之类的让你去某Q验证,验证OK即可登录,甚至页面不需要动,客户端会自动跳转。
细细想想确实是那么一回事,这样也符合客户说的,即使远在天边,或者是本人登录,都可以实现,《本人确认,才可登录》这样的一个需求。
CHAT-❤️️❤️️❤️️救命阶段
别说了,搞得自己很厉害一样,就算知道了,也要知道大概怎么实现,因为没做过,所以我毫不犹豫直接启动❤️️❤️️❤️️(穷逼来的,免费的3.5版本)
第一遍
这都在说什么锤子,根本没一个可以用的,而且如果一直发送,服务器根本没必要一直接收浪费资源,完全就是扯淡,pass
第二遍
我想根据事件监听机制,通过触发某些开关进行推送进而登录,不用浪费服务器资源,可突然❤️️❤️️❤️️一个思路提醒了我,ws协议!(长连接、实时通知),我靠这不比什么监听爽多了,刚好我现在一直用netty封装ws协议进行通信(项目的一些netty通信代码都是我写的),对这个ws协议比较熟悉了现在,那不是爽多了!
有了这个基础,我就去找相关资料,刚好ruoyi其实自己的官网也有类似的ws插件集成(参考:https://doc.ruoyi.vip/ruoyi/document/cjjc.html#%E9%9B%86%E6%88%90websocket%E5%AE%9E%E7%8E%B0%E5%AE%9E%E6%97%B6%E9%80%9A%E4%BF%A1)
把代码包抓下来,开始结合自己的思路进行实现。
代码实现
首先第一步,先把登录成功给关了,改成仅仅验证账号密码是否OK。
更改之前
shiro仅验证账号密码(来自❤️️❤️️❤️️生成)
更改ws,追加一些必要信息
跟前端沟通,如果需要微信授权的时候,那点击登陆的时候,会自动往我的后台注册ws连接,并且输入端点信息
后端发送微信模板追加信息
微信点击登录确认OK
页面模板就不发了(不想截图了啊啊啊啊啊啊)
点击确定的时候直接发送真正登录跳转请求(这个时候我会根据userName和Pasword和ws-sessionId连锁到这个会话信息)
前端响应跳转
至此功能OK
小小总结
首先这是我第一篇摸鱼派的技术贴,我有我自己的比较云淡风轻或者比较侃侃而谈的风格。大家可以各抒己见畅所欲言,发的意见我都会听。
呐其次呢,这篇技术贴难度其实不是特别大,像后期因为一些比较乌龙的事儿导致一个页面连接可以多次点击什么的,也可以进行优化,像我就追加了一些sql持久化,点击一次后永久失效,数据置换一些状态而已,或者检查登录连接是否已经过期五分钟诸如此类的逻辑,都难度不大,重在分享。
最后一个就是我有一些比较官方的博客,某dn的,我也贴一下连接,看看大家比较适合那种风格,后期我也会有空就分享更新,爱你宝贝们。
贴贴某dn的连接:https://blog.csdn.net/itxc_0630/article/details/137147405?spm=1001.2014.3001.5502(各位爱看不看)
能用轮询搞定的问题都不是问题