激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - java實現二維碼掃碼授權登陸

java實現二維碼掃碼授權登陸

2021-06-07 14:10李秀才 Java教程

這篇文章主要為大家詳細介紹了java實現二維碼掃碼授權登陸,具有一定的參考價值,感興趣的小伙伴們可以參考一下

假設現在有2個設備,a設備需要掃碼授權登陸,b設備是已經登陸了的設備。然后實現如下:

一、a設備生成生成二維碼:

a設備向服務器請求getlogincode接口,這個接口根據請求的sessionid進行base64或其他加密方式進行加密,然后以此作為二維碼的值,并將這個logincode寫到redis里,設置5分鐘過期。然后將這個logincode返回給a設備,a設備以此值來生成登陸的二維碼。

二、b設備掃碼授權

b設備來掃a設備的二維碼的時候,攜帶二維碼的值,請求授權登陸的接口scanconfirmlogin,此接口里先校驗二維碼是否過期,沒過期的話進行后面的業務邏輯處理,將用戶的基本信息和token寫到redis里。

三、a設備輪詢獲取授權狀態

b設備以每秒一次的頻率來刷 獲取用戶授權狀態接口,若狀態為已授權,拿到用戶信息去做后面的邏輯處理。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/**
* 獲取掃描登陸的二維碼
* @param noncestr隨機字符串
* @throws exception
*/
@requestmapping(value = "user/getlogincode.json")
public void getlogincode(string noncestr,httpservletrequest request,httpservletresponse response) throws exception {
if(stringutil.isblank(noncestr)){
apidata(request, response,reqjson.error(commonerror.params_imperfect));
return;
}
//參數的有效性校驗在攔截器里實現
int expirationtime=300; //時效5分鐘
final string sessionid=request.getsession().getid();
string logincode=toolutils.getbase64(sessionid);
jedisutil.set(logincode, logincode, expirationtime);
map<string,object> map=new hashmap<>();
map.put("logincode", logincode);
map.put("expirationtime", expirationtime);
apidata(request, response, reqjson.ok(map));
}
/**
* 掃碼確認登陸
* @param logincode
* @param request
* @param response
* @throws exception
*/
@requestmapping(value = "user/scanconfirmlogin.json")
@authorizationapi
public void scanconfirmlogin(@currenttoken final token token,string logincode,httpservletrequest request,httpservletresponse response) throws exception {
if(stringutil.isblank(logincode)){
apidata(request, response,reqjson.error(commonerror.params_imperfect));
return;
}
string userid=token.getuserid();
map<string,string> map=new hashmap<>();
string loginticket=jedisutil.get(logincode);
if(stringutil.isblank(loginticket)){
//二維碼過期
apidata(request, response,reqjson.error(commonerror.two_dimensional_code_has_expired));
return;
}
userinfo userinfo = userinfobiz.getuser(new userinfo(userid));
if(userinfo==null){
apidata(request, response,reqjson.error(usererror.user_not_found));
return;
}
//將用戶信息放在緩存中
map.put(baseconfig.access_token, token.getaccesstoken());
map.put("userid", userinfo.getuserid());
map.put("rongcloudtoken", userinfo.getrongcloudtoken());
map.put("identity", userinfo.getidentity());
jedisutil.setmap(logincode+"scanconfirmlogin", map, 300);
apidata(request, response, reqjson.ok(new object()));
}
/**
* 獲取登陸狀態
* @param logincode
* @param request
* @param response
* @throws exception
*/
@requestmapping(value = "user/getscanconfirmloginstatus.json")
public void getloginstatus(final string logincode,httpservletrequest request,httpservletresponse response) throws exception {
if(stringutil.isblank(logincode)){
apidata(request, response,reqjson.error(commonerror.params_imperfect));
return;
}
map<string,string> map= jedisutil.getmap(logincode+"scanconfirmlogin");
if(map==null){
apidata(request, response,reqjson.error(commonerror.authorization_has_expired));
return;
}
apidata(request, response, reqjson.ok(map));
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/qq_33556185/article/details/80060764

延伸 · 閱讀

精彩推薦
790
主站蜘蛛池模板: 久久久久亚洲精品国产 | 日韩精品中文字幕一区 | 久草影音| 中文字幕在线观看电影 | 久久9999久久 | 日本在线观看高清完整版 | 成人免费淫片视频观 | 日本在线免费观看视频 | 日韩app| 国产大片在线观看 | 污黄视频在线观看 | 亚洲第一视频 | 国产精品99久久99久久久二 | 久久撸视频| 成人毛片视频在线播放 | 久久视频精品 | 欧美视屏一区二区 | 欧美三级美国一级 | 国产中出在线观看 | 国产精品视频一区二区三区四区五区 | 欧美激情精品久久久久久黑人 | 国产精品视频网 | 奶子吧naiziba.cc免费午夜片在线观看 | 成人网视频 | 日本人乱人乱亲乱色视频观看 | 欧美精品成人一区二区在线观看 | 色av成人天堂桃色av | av在线播放地址 | 午夜激情视频免费 | 少妇一级淫片免费放4p | 成人一级免费视频 | 免费永久看羞羞片网站入口 | 天天都色| 国产高清美女一级毛片久久 | 国产麻豆交换夫妇 | 国产污污视频 | 国产成人午夜精品 | 欧美毛片在线观看 | 91亚洲精品一区二区福利 | 强伦女教师视频 | 一级黄色片武则天 |