【Spring Security】记录微信授权改造

前段时间接触Spring Security,做微信授权登录。

刚接触Spring Security感觉比较晦涩,看了一些文章说的不是很清楚,有些文章解决的深入一些又不太好理解,网上很多都是转载的同一片文章,学习起来比较痛苦。我希望能帮助到其他初学者,因此有了这篇文章,也养成记录的好习惯。

我是用的开源项目ruoyi,他已经实现了密码认证。

 我一开始的设计思路是,直接使用login方法,不再写一份单独的登录。用微信openid匹配系统内的关联账号,解密密码为明文密码放入login方法 password中,然后授权token,看起来是不是一切都很完美~

结果解密密码过程异常复杂,需要在源码里找具体相关片段,挣扎了一段时间后放弃。

第二个思路,既然密码解密行不通,那么我直接跳过 authenticate 认证步骤直接生成token可以吗?答案自然是可以的,只不过这一块内容没有用上认证体系,既然接触到了这一块,必须要把这一块理解的七七八八。

第三个思路,其实到这里也没什么思路了,开始在网上找前辈们的经验。发现大量的转载都来自一两篇文章,按照方法去做,结果并不好。


 

需要做的改动

注册Provider,ruoyi实现的方式不一样。

 

重写 authenticate

 

重写 loadUserByUsername

 

新增 weChatServiceImpl

 

大概的流程是

-> 注册Provider

-> 微信授权ServiceImpl

-> 根据注册的 Provider 找到对应的认证方法 authenticate

-> 指定UserDetailsService的实现类,实现loadUserByUsername方法

-> 认证成功后返回Authentication,生成token完成认证

看了几篇有用的文章,大概懂了是如何运作的。

https://www.cnblogs.com/wzkris/p/16984369.html

SpringSecurity自定义多Provider时提示No AuthenticationProvider found for问题的解决方案与原理(一)_半斤米粉闯天下的博客-CSDN博客SpringSecurity 5.6.X 自定义多Provider时No AuthenticationProvider found for问题的排查与修复https://blog.csdn.net/u012760435/article/details/126558412

如有错误,请指正。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值