亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Java模擬實現QQ三方登錄(單點登錄2.0)

瀏覽:134日期:2022-05-29 08:18:42

本文實例為大家分享了Java模擬實現QQ三方登錄的具體代碼,供大家參考,具體內容如下

本次例子模擬這樣的情況:

Java模擬實現QQ三方登錄(單點登錄2.0)

一共有2個spring boot應用:

一個是某公司的web,第二個是QQ服務端。

某公司的應用為127.0.0.1:8082

QQ服務端為127.0.0.1:8081

演示如下:

Java模擬實現QQ三方登錄(單點登錄2.0)

點擊使用QQ登錄:

Java模擬實現QQ三方登錄(單點登錄2.0)

在彈出的界面輸入數據點擊登錄后:

Java模擬實現QQ三方登錄(單點登錄2.0)

關鍵代碼如下:

某公司web端:

MyController.java

package cn.it1995.login.controller; import cn.it1995.login.util.CookieUtil;import cn.it1995.login.util.Result;import com.alibaba.fastjson.JSON;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.ResponseEntity;import org.springframework.util.LinkedMultiValueMap;import org.springframework.util.MultiValueMap;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.ConcurrentMap; @RestControllerpublic class MyController { @Autowired private RestTemplate restTemplate; private static final String USER_KEY='user_key'; private ConcurrentMap<String, Object> user = new ConcurrentHashMap<>(); @GetMapping('/getUser') public Object getUser(HttpServletRequest request, HttpServletResponse response){ String loginCookie = CookieUtil.getLoginCookie(request, response); Object o = user.get(loginCookie); return Result.success(o); } @PostMapping('/loginByQQ') public Object loginByQQ(String token, HttpServletResponse response, HttpServletRequest request){ MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap(); paramMap.add('token', token); ResponseEntity<Object> objectResponseEntity = restTemplate.postForEntity('http://127.0.0.7:8081/getLoginInfo', paramMap, Object.class); Object body = objectResponseEntity.getBody(); String uuid = CookieUtil.setLoginCookie(request, response); //json標準化 String newJson = body.toString().replace('=', ':'); System.out.println(newJson); Map map = JSON.parseObject(newJson, Map.class); Map data = JSON.parseObject(map.get('data').toString(), Map.class); user.put(uuid, data); return Result.success(); }}

QQ服務端:

UserController.java

package cn.it1995.qqServer.controller; import cn.it1995.qqServer.util.JwtUtil;import cn.it1995.qqServer.util.Result;import com.alibaba.fastjson.JSON;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.*; import java.util.HashMap;import java.util.Map;import java.util.UUID; @Controllerpublic class UserController { @ResponseBody @RequestMapping('/login') public Object login(@RequestParam('username') String username, @RequestParam('password') String password){ Map<String, Object> map = new HashMap<>(); map.put('username', username); map.put('password', password); String jwt = JwtUtil.createJWT(UUID.randomUUID().toString(), JSON.toJSONString(map), 3600 * 24); return jwt; } @ResponseBody @RequestMapping('/getLoginInfo') public Object getLoginInfo(String token){ String subject = JwtUtil.parseJWT(token).getSubject(); return Result.success().data(subject); } }

項目打包下載地址:SSODemo

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

標簽: qq
相關文章:
主站蜘蛛池模板: 高h喷水荡肉爽文各种场合 高h辣肉各种姿势爽文bl | 999成人精品视频在线 | 乱人xxx国语对白91 | 亚洲a级毛片| 黄色片一级免费看 | 看真人视频一一级毛片 | 国产福利在线免费观看 | 国产专区一区 | 精品老司机在线视频香蕉 | 免费a级特黄国产大片 | 亚洲国产情侣一区二区三区 | 国产色综合天天综合网 | 国产成人综合久久亚洲精品 | 久久国产免费一区 | 6080yy 久久 亚洲 日本不卡 | 欧美亚洲免费久久久 | 多男一女一级淫片免费播放口 | 亚洲精品入口一区二区在线观看 | 国产麻豆精品一区二区 | 91香蕉国产线在线观看免费 | 国产精视频 | 欧美一区二区三区日韩免费播 | 污污网 | 尤物网站在线 | 在线视频观看你懂的我的 | 日本免费看片在线播放 | 青草草在线观看免费视频 | 在线精品视频在线观看高清 | 亚洲成年网 | 国产v精品成人免费视频400条 | 99国产精品九九视频免费看 | 欧美一级视频在线高清观看 | 国产精品爱啪在线线免费观看 | 黄色一级视频在线观看 | 黄图视频在线观看 | 国产一区二区三区成人久久片 | 亚洲香蕉国产高清在线播放 | 拍拍拍又黄又爽无挡视频免费 | 亚洲精品中文字幕乱码一区二区 | 一级免费黄色毛片 | 日本午夜一级特黄毛片 |