麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

javaweb實現app掃碼登錄功能

2024-07-14 08:42:39
字體:
來源:轉載
供稿:網友

本文為大家分享了javaweb實現app掃碼登錄的具體代碼,供大家參考,具體內容如下

1.web頁面主動向服務器索要一張由服務器生成包含維一標識的二維碼圖片,也可以直接向后臺索要一個維一標識,拿到標識后通過js生成二維碼。這里本人采用的是第二種方式,至于為什么嗎?個人感覺這樣方便,后臺也不要導入架包,最后將該標識存入List集合中,接下來會用到該標識

2.app掃碼后解析二維碼內的維一標識,然后再攜帶該標識跟用戶名發回給服務器,服務器接到請求后,遍歷List集合,驗證該標識是否為本系統生成的,若是再去驗證用戶名是否存在,若存在這時需將標識與用戶名綁定在一起,綁定的方式有好多種。我這里采用一種較為簡單的方法Map的方式,將標識做為key 用戶名做為value存在一個全局Map中,表示該用戶已經掃過碼,只等接下來的驗證了

3.web頁面從向服務器索取二維碼或標識后(第一步操作之后)就開始通過ajax每隔2秒或幾秒鐘帶上維一標識向服務器發起檢查請求,通過該標識查看Map是否有對應的用戶已經掃過碼而未登錄,有的話直接登錄,沒有的話繼續輪尋,當然你也可以采用建立長連接的方式

4.以下為后臺代碼 

package com.*;  @Controller@RequestMapping(value = "/login")public class LoginController{  @Autowired private UserInfoBaseService userInfoBaseService;  //存儲二維碼維一標識 public static Set<String> tokes = new HashSet<>(); //存儲toke綁定的用戶 public static Map<String,String> users = new HashMap<>();  /** * 生成二維碼維一標識Toke * @return */ @ResponseBody @RequestMapping("/generationQRCode") public String generationToken(){ String uid = UUID.randomUUID().toString(); tokes.add(uid); return uid; }  /** * app掃碼后將token與用戶綁定 * @param loginName * @param token * @return */ @ResponseBody @RequestMapping("/determine") public ResponseEntity determine(String loginName, String token){ for (String t:tokes) {  if(t.equals(token)){  users.put(token,loginName);  UserInfo userInfo = userInfoBaseService.getUserByLoginName(loginName);  if(null==userInfo){return new ResponseFailure("用戶不存在");}  return new ResponseEntity("正在登錄請稍后...");  } } return new ResponseEntity("請求無效"); }  /** * Axaj定時請求是否有用戶掃描了二維碼 * @param token */ @ResponseBody @RequestMapping("/scanLogin") public String scanLogin(String token){ if(StringKit.isBlank(token)){return "token is null";} String loginName = users.get(token); if(StringKit.isBlank(loginName)){ return "error";} //Subject subject = SecurityUtils.getSubject(); //注釋的這三行換成你自已的登錄代碼就行了 //subject.logout(); //UsernamePasswordTokenType tokenType = new UsernamePasswordTokenType(loginName, "123456",2); try{  subject.login(tokenType); }catch (Exception e){  e.printStackTrace(); } users.remove(token); tokes.remove(token); return "success"; } }

5.以下為前臺代碼

//獲取維一標識token生成二維碼 $.post('${ctx}/login/generationQRCode', function (token) {   new QRCode(document.getElementById('qrcode'), {text:token,height:125,width:125});   $('#qrcode').removeAttr('title');   $('#qrcode').attr('token',token);    });    //ajax定時查看是否有用戶掃碼后未登入    var time = window.setInterval(function () {      var token = $('#qrcode').attr('token');      if(token){        $.post('${ctx}/login/scanLogin',{'token':token},function (data) {          if(data == 'success'){            clearInterval(time);            window.location.href = '${ctx}/login/';          }      })   }},1000);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 在线男人天堂 | 欧美精品一区二区三区久久久 | 亚洲小视频在线 | 久久国产成人精品国产成人亚洲 | 久久国产精品小视频 | 欧美人一级淫片a免费播放 久久久久久久久91 国产99久久久久久免费看 | 蜜桃视频最新网址 | 亚洲91精品 | 羞羞的视频在线免费观看 | 欧美天堂一区 | 日韩视频在线一区二区三区 | 九九热精品在线播放 | 精品亚洲va在线va天堂资源站 | av免费av| 激情在线视频 | 性爱视频免费 | 日本中文一级片 | 久久久久久艹 | 成码无人av片在线观看网站 | 少妇一级淫片高潮流水电影 | 伊人成人免费视频 | 色污视频 | 欧美亚洲一区二区三区四区 | 久久一本日日摸夜夜添 | 国内精品伊人久久久久网站 | 99国产精品自拍 | 成人偷拍片视频在线观看 | 成人在线视频在线观看 | 久久人添人人爽人人爽人人片av | 中文字幕一区久久 | 欧美在线 | 亚洲 | 国产精品99久久久久久久vr | 精品国产看高清国产毛片 | 国产免费一区视频 | 一区二区三区视频在线观看 | 久久精品中文字幕一区二区三区 | 性大片1000免费看 | 黄色特级毛片 | a级毛片免费观看在线播放 日本aaa一级片 | 欧美一级淫片免费播放口 | 一级黄色淫片 |