刚刚两周在部门的用户中心开发了一个微信绑定功能,部门的用户中心后台是基于Oauth和Spring security 这俩框架下做的,其实最终实现很简单,但选取最终的方案却很曲折,在这里记录一下本次开发的一些体会。
介绍
-
接入微信登录/绑定前的后台框架
流程图.jpg
我负责的部分是微信绑定功能,这里是它的需求:
1.用户登录系统
2.用户点击“微信绑定”,后台去绑定,绑定成功后调到指定前端页面
这里的关键点是用户已经登录了系统,而且要在调用微信绑定后,跳回本系统的指定页面。就在跳回本系统页面这一步,我遇到了难题:如何跳回本系统页面不需让用户再登录一次,因为我们后台是Oauth+Security,微信回调回来后,它是一个全新的会话,之前登录过的会话信息全被清除了,这会就会被认为是一次新的连接请求,会被引导到登录页面,但这样是不符合需求的
已尝试的办法(失败)
一开始在网上搜索了微信绑定的各种实现办法:
1.通过微信回调后传入的微信临时凭证code 及 透传的state ,通过后台的某个部分(比如ngix)去到相应的前端页面
2.通过获取后台缓存的Session去登录
- 缓存服务端的sessionId,在重定向的前端页面取到该该sessionId,然后传给后台进行判断
最终找之前完成微信登录的同事讨论了下,他推荐看下网上的基于Spring social框架集成第三方登录的教程(爱慕课上也有视频),回去看了下,发现就直接基于Spring security上添加一个自定义的微信绑定过滤链,就可以了,大家直接搜【 security oauth 微信登录】,应该第一条内容就是。整个集成的开发过程非常快,基本花上办个小时改完后台代码,再写个前端页面联调就ok。事后总结了下,同样是两周,为什么我的同事就能搜索好资料搞定实现,为什么我同样的时间内,自己却做不到这样呢?
总结
下列其实也是一个要快速掌握、搞定一个你没有做过的功能的方法
我想了下同事做事的步骤,他比我实现的快,第一是先搜索到对的关键词。什么是对的关键词呢?比如我这次微信绑定的功能是基于security 和 oauth的,那我就需要搜 security oauth 微信绑定。
第二,是要根据关键词 在 github上搜源码,找到相近合适的源码后,先调通,然后尽快的把功能实现。对于新手来说,实现是第一要务,在实现的基础上,再继续慢慢理解里面的原理。
网友评论