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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

扫描二维码登录的接口

發布時間:2023/12/10 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 扫描二维码登录的接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近寫了一個掃描二維碼登錄的接口,功能完成后,有很多的知識需要學習。

首先說一下掃碼登錄的流程:一個程序最重要的就是業務流程,只有明白流程是什么才能繼續往下寫代碼

掃碼登錄的流程:

(1)生成二維碼:

??????? a.首先生成隨機的Id用來表示生成的二維碼,使用cookie中的uniqueFlag為名稱用來標記是否登錄,如果cookie中存在uniqueFlag,則直接將randomId的值為該cookie的值,表示已經登錄;沒有的話則創該cookie.???????????? CookieTool.addCookie(response,"uniqueFlag",randomId,86400);

?????? b.生成二維碼的內容為接口的地址加上隨機的randomId,用來保證每個二維碼不一樣,其中的鏈接使用了加密,加密方式為3DES, 返回字符串為Base64

?????? c.生成二維碼,使用BufferImage用來裝生成的圖片,其中使用了QRCodeUtils工具類中的encode方法,對鏈接進行生成二維碼

?????? d.輸出二維碼:盡量不要使用文件的形式,將生成的二維碼放到哪個文件中,這樣會造成占用空間,并且圖片的位置在服務器上不容易找到圖片文件的路徑,容易造成圖片不能生成,我采取的方法是使用response.getOutputStream()? 輸出流直接輸出到頁面,這樣不會占用空間,而且不管是在本地還是在服務器上都能輸出出來? 。ImageIO.write(bufImg, "jpg", out);?? 使用ImageIO展示圖片,其中BufImage表示二維碼的內容,jpg表示生成二維碼的格式,out使用輸出流直接輸出到頁面上。此過程可能會拋出異常,try? catch 一下就可以了。

(2)掃描二維碼:定時向后臺發起輪詢

????? a.前臺使用Ajax進行定時向后臺發送請求,定時方法使用setInterval("方法名",秒數),查詢是否登錄,這里的查詢是查詢根據cookie的uniqueFlag名得到相應的randomId,再通過randomId得到所對應的redis緩存,判斷是否是空,如果不是空則進行相應操作,存用戶的信息,存cookie,存session,并返回true,是空的話直接返回false;

????? b.后臺查詢:得到cookie中uniqueFlag的random值,得到redis緩存中以random為key值的sign值,如果sign不為空,分割字符串,并將對應的信息存到cookie和session中,返回true,否則返回false.

(3)掃碼登錄:手機app處于登錄狀態

???? a.接口的使用post 表單提交 key value 的方式得到簽名sign值和二維碼Id的值

?????? b.其中的sign傳值時需要加密,在springMvc中直接通過名得到值,也可以通過request.getParameter()來得到相應的值。

????? c.接收到參數最先判斷是否為空,如果為空,則登錄失敗,可以使用map? ,put進相應的信息再轉成json

????? d.不是空則進行解密,并把解密后的結果存到redis中以randomId為key的緩存中,返回成功。

總結

以上是生活随笔為你收集整理的扫描二维码登录的接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。