1 先在前端 写一个超链接 获取code 地址 带着 令牌去访问后端接口
<a :href="codeUrl">gitEe登录</a>data(){ return { codeUrl:'', } }getCodeUrl () { this.axios.get('http://localhost:9090/userapi/user/getCodeUrl') .then(res => { this.codeUrl = res.data.codeUrl console.log(this.codeUrl) }) }created() {this.getCodeUrl() let code = this.$route.query.code this.formInline.code = code if (code) { this.axios.get('http://localhost:9090/userapi/user/giteeLogin?code='+ this.formInline.code) .then(res => { if (res.data.flag) { // alert(res.data.token) sessionStorage.setItem('token', res.data.token) this.$router.push('/list') } else { sessionStorage.setItem('token',res.data.token) this.open() } }) }}
2.后端
@GetMapping("/getCodeUrl") public Map<String, Object> getCodeUrl() { HashMap<String, Object> map = new HashMap<>(); String oauth2CodeUrl = oauth2ClientService.getOauth2CodeUrl(); System.err.println("CodeUrl::::" + oauth2CodeUrl); map.put("flag", true); map.put("codeUrl", oauth2CodeUrl); return map; }
@GetMapping("/giteeLogin") public Map<String, Object> giteeLogin(String code) { QueryWrapper<User> wrapper = new QueryWrapper<>(); HashMap<String, Object> map = new HashMap<>(); AccessTokenDto accessToken = oauth2ClientService.getAccessToken(code); Oauth2ClientUserDto currentUser = oauth2ClientService.getCurrentUser(accessToken); // 查询当前登录地址 // String loginAddress = BaiduMapUtil.getAddress(); System.err.println("giteeid::" + currentUser.getId()); wrapper.eq("giteeid", currentUser.getId()); User one = userService.getOne(wrapper); if (one != null) { // if (redisTemplate.hasKey(one.getGiteeid())) { // String oldAddr = (String) redisTemplate.opsForValue().get(one.getGiteeid()); // if (!loginAddress.equals(oldAddr)) { // System.out.println("异地登录"); // redisTemplate.delete(one.getGiteeid()); // map.put("flag", false); // map.put("loginStatus", "Exception"); // return map; // } // } System.err.println("[查询 5" + "5tfffffffffff到本地绑定用户] " + one); String token = JwtUtils.createToken(one); System.err.println("TOKEN:" + token); // redisTemplate.opsForValue().set(one.getGiteeid(), loginAddress); map.put("token", token); map.put("flag", true); } else { System.err.println(" ERROR!!: [此用户未绑定本地账号] "); User User = new User(); User.setGiteeid(currentUser.getId()); System.err.println("本地未发现用户,存token内容: " + User); String token = JwtUtils.createToken(User); // redisTemplate.opsForValue().set(currentUser.getId(), loginAddress); map.put("token", token); map.put("flag", false); } return map; }