剛剛兩周在部門(mén)的用戶中心開(kāi)發(fā)了一個(gè)微信綁定功能箱锐,部門(mén)的用戶中心后臺(tái)是基于Oauth和Spring security 這倆框架下做的劳较,其實(shí)最終實(shí)現(xiàn)很簡(jiǎn)單臊恋,但選取最終的方案卻很曲折毙替,在這里記錄一下本次開(kāi)發(fā)的一些體會(huì)袱院。
介紹
-
接入微信登錄/綁定前的后臺(tái)框架
流程圖.jpg
我負(fù)責(zé)的部分是微信綁定功能忽洛,這里是它的需求:
1.用戶登錄系統(tǒng)
2.用戶點(diǎn)擊“微信綁定”腻惠,后臺(tái)去綁定,綁定成功后調(diào)到指定前端頁(yè)面
這里的關(guān)鍵點(diǎn)是用戶已經(jīng)登錄了系統(tǒng)复哆,而且要在調(diào)用微信綁定后欣喧,跳回本系統(tǒng)的指定頁(yè)面腌零。就在跳回本系統(tǒng)頁(yè)面這一步,我遇到了難題:如何跳回本系統(tǒng)頁(yè)面不需讓用戶再登錄一次唆阿,因?yàn)槲覀兒笈_(tái)是Oauth+Security益涧,微信回調(diào)回來(lái)后,它是一個(gè)全新的會(huì)話驯鳖,之前登錄過(guò)的會(huì)話信息全被清除了闲询,這會(huì)就會(huì)被認(rèn)為是一次新的連接請(qǐng)求,會(huì)被引導(dǎo)到登錄頁(yè)面臼隔,但這樣是不符合需求的
已嘗試的辦法(失斷诹选)
一開(kāi)始在網(wǎng)上搜索了微信綁定的各種實(shí)現(xiàn)辦法:
1.通過(guò)微信回調(diào)后傳入的微信臨時(shí)憑證code 及 透?jìng)鞯膕tate 妄壶,通過(guò)后臺(tái)的某個(gè)部分(比如ngix)去到相應(yīng)的前端頁(yè)面
2.通過(guò)獲取后臺(tái)緩存的Session去登錄
- 緩存服務(wù)端的sessionId摔握,在重定向的前端頁(yè)面取到該該sessionId,然后傳給后臺(tái)進(jìn)行判斷
最終找之前完成微信登錄的同事討論了下丁寄,他推薦看下網(wǎng)上的基于Spring social框架集成第三方登錄的教程(愛(ài)慕課上也有視頻)氨淌,回去看了下,發(fā)現(xiàn)就直接基于Spring security上添加一個(gè)自定義的微信綁定過(guò)濾鏈伊磺,就可以了盛正,大家直接搜【 security oauth 微信登錄】,應(yīng)該第一條內(nèi)容就是屑埋。整個(gè)集成的開(kāi)發(fā)過(guò)程非澈荔荩快,基本花上辦個(gè)小時(shí)改完后臺(tái)代碼摘能,再寫(xiě)個(gè)前端頁(yè)面聯(lián)調(diào)就ok续崖。事后總結(jié)了下,同樣是兩周团搞,為什么我的同事就能搜索好資料搞定實(shí)現(xiàn)严望,為什么我同樣的時(shí)間內(nèi),自己卻做不到這樣呢逻恐?
總結(jié)
下列其實(shí)也是一個(gè)要快速掌握像吻、搞定一個(gè)你沒(méi)有做過(guò)的功能的方法
我想了下同事做事的步驟,他比我實(shí)現(xiàn)的快复隆,第一是先搜索到對(duì)的關(guān)鍵詞拨匆。什么是對(duì)的關(guān)鍵詞呢?比如我這次微信綁定的功能是基于security 和 oauth的挽拂,那我就需要搜 security oauth 微信綁定惭每。
第二,是要根據(jù)關(guān)鍵詞 在 github上搜源碼轻局,找到相近合適的源碼后洪鸭,先調(diào)通样刷,然后盡快的把功能實(shí)現(xiàn)。對(duì)于新手來(lái)說(shuō)览爵,實(shí)現(xiàn)是第一要?jiǎng)?wù)置鼻,在實(shí)現(xiàn)的基礎(chǔ)上,再繼續(xù)慢慢理解里面的原理蜓竹。