日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C(++) Websocket实现扫码二维码登录---GoEasy

發(fā)布時間:2025/1/21 编程问答 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C(++) Websocket实现扫码二维码登录---GoEasy 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近在做一個掃碼登錄功能,為此我還在網(wǎng)上搜了一下關(guān)于微信的掃描登錄的實現(xiàn)方式。當這個功能完成了后,我決定將整個實現(xiàn)思路整理出來,方便自己以后查看也方便其他有類似需求的程序猿些。要實現(xiàn)掃碼登錄我們需要解決兩個問題:1.??在沒有輸入用戶名及密碼的情況下,如何解決權(quán)限安全問題?換句話講,如何讓服務(wù)器知道掃碼二維碼的客戶端是一個合法的用戶?2.??服務(wù)器根據(jù)用戶在客戶端的選擇如何實時在網(wǎng)頁上作出相應(yīng)的響應(yīng)?

首先我們先理一下微信的實現(xiàn)思路,來方便我們理解解決這一難題的思路方向。微信登錄的二維碼實際上是將一個URL轉(zhuǎn)換成二維碼的形式,而通過微信客戶端掃碼后,無非就是打開了這個url, 我捕捉到的微信二維碼的urlhttps://login.weixin.qq.com/l/YdmTu30I5A==?,這個url里的YdmTu30I5A==代表的是本次會話的唯一ID, 這個有點兒類似瀏覽器里的session id,通過這個ID,微信就能定向?qū)⒋_認結(jié)果反饋到網(wǎng)頁上。使用微信二維碼登錄功能,需要有兩個前提:一是客戶端上需要安裝微信app二是用戶需要登錄到到微信apphttps://wx.qq.com/

?

C(++) Websocket消息推送

?

為什么要有這兩個條件呢?那是因為微信在確認是否允許登錄到網(wǎng)頁版的時候,微信需要提取當前app的登錄信息并將上面的session ID一并發(fā)給服務(wù)器,這樣服務(wù)器收到了登錄信息和sessionID后就可以確認兩件事:一是用來確認登錄的客戶端的用戶是驗證過的;二是通過sessionID服務(wù)器知道將反饋結(jié)果推送到哪個網(wǎng)頁。

?? 所以針對第一點,我們的關(guān)鍵在于,在掃描前要確保用戶是已經(jīng)被驗證過且合法的用戶(驗證方式可以是用戶名+密碼,也可以是一個secure key),在選擇是否登錄時將這個結(jié)果一并推送到服務(wù)器端,就好了。如果用戶沒有驗證是否合法,可以像微信的處理方式一樣直接告訴用戶二維碼不可識別或提示請先登錄到app

? 有了身份驗證,那么現(xiàn)在就解決第二個問題,如何將反饋結(jié)果實時地顯示在網(wǎng)頁上呢?有朋友可能會說,客戶端這邊很簡單發(fā)一個請求到后臺就好了,而網(wǎng)頁上用ajax定時發(fā)送到服務(wù)器端看是否有反饋。我不贊成這種做法,因為ajax輪詢方式十分消耗客戶端和服務(wù)器端資源!這里涉及到另一個技術(shù)-web實時推送技術(shù),使用推送技術(shù)可以節(jié)約服務(wù)器端和客戶端的資源,可以穩(wěn)定地推送和接收任何消息。我在實現(xiàn)的過程中我采用了第三方推送服務(wù)-GoEasy推送,用它是實現(xiàn)非常簡單,我們項目里的其他功能也用到了GoEasy web實時推送服務(wù),所以在此我直接就用的GoEasy推送來將登錄反饋結(jié)果推送到服務(wù)器。我的實現(xiàn)步驟非常簡單,將傳送的session ID作為客戶端與網(wǎng)頁端的通信channel,網(wǎng)頁端訂閱用session ID作為值得channel,客戶端將驗證結(jié)果和session ID發(fā)送到服務(wù)器端,服務(wù)器端可以通過這個channel主動將結(jié)果推送給網(wǎng)頁版!如果客戶端也需要做相應(yīng)的反饋的話,那么客戶端也只需要訂閱這個channel,然后服務(wù)器端會同時將結(jié)果推送給網(wǎng)頁版和客戶端,收到消息后,就可以根據(jù)需求在goeasy的回調(diào)函數(shù)里做你想做的事情了。關(guān)于goeasy推送的使用,大家可以參考這篇博客:?http://www.cnblogs.com/jishaochengduo/articles/5552645.html另外GoEasy推送官網(wǎng)上也有一個demoGoEasy二維碼掃碼登錄demo,大家可以去看看效果.

? 希望對大家有幫助,如有理解錯誤的地方,還請大家斧正。


轉(zhuǎn)載于:https://blog.51cto.com/12271250/1879571

總結(jié)

以上是生活随笔為你收集整理的C(++) Websocket实现扫码二维码登录---GoEasy的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。