提供给外部使用的token验证
							parent
							
								
									a592b9443d
								
							
						
					
					
						commit
						a9f1104178
					
				| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
package com.bocloud.sms.booter.controller;
 | 
					package com.bocloud.sms.booter.controller;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.alibaba.fastjson.JSONObject;
 | 
				
			||||||
import com.auth0.jwt.interfaces.Claim;
 | 
					import com.auth0.jwt.interfaces.Claim;
 | 
				
			||||||
import com.bocloud.sms.interfaces.TenantService;
 | 
					import com.bocloud.sms.interfaces.TenantService;
 | 
				
			||||||
import com.bocloud.sms.interfaces.UserService;
 | 
					import com.bocloud.sms.interfaces.UserService;
 | 
				
			||||||
| 
						 | 
					@ -15,6 +16,7 @@ import org.springframework.data.redis.core.StringRedisTemplate;
 | 
				
			||||||
import org.springframework.util.StringUtils;
 | 
					import org.springframework.util.StringUtils;
 | 
				
			||||||
import org.springframework.web.bind.annotation.GetMapping;
 | 
					import org.springframework.web.bind.annotation.GetMapping;
 | 
				
			||||||
import org.springframework.web.bind.annotation.PostMapping;
 | 
					import org.springframework.web.bind.annotation.PostMapping;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.RequestBody;
 | 
				
			||||||
import org.springframework.web.bind.annotation.RestController;
 | 
					import org.springframework.web.bind.annotation.RestController;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
| 
						 | 
					@ -70,6 +72,35 @@ public class TokenController {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //提供给外部验证token的接口
 | 
				
			||||||
 | 
					    @PostMapping("/v1/token/check")
 | 
				
			||||||
 | 
					    @Operation(summary = "单点登录验证token")
 | 
				
			||||||
 | 
					    public GeneralResult<String> checkTokenOut(@RequestBody JSONObject jsonObject) {
 | 
				
			||||||
 | 
					        String token = jsonObject.getString("token");
 | 
				
			||||||
 | 
					        if (!StringUtils.hasText(token)) {
 | 
				
			||||||
 | 
					            return new GeneralResult<>(false, "token校验失败");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        String tokenKey = "";
 | 
				
			||||||
 | 
					        if (StringUtils.hasText(token)) {
 | 
				
			||||||
 | 
					            Claim claim = Tokens.parse(token);
 | 
				
			||||||
 | 
					            if (claim == null) {
 | 
				
			||||||
 | 
					                return new GeneralResult<>(false, "token校验失败");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            String catalog = claim.asMap().get("catalog").toString();
 | 
				
			||||||
 | 
					            long uuid = Long.parseLong(claim.asMap().get(Common.UUID).toString());
 | 
				
			||||||
 | 
					            tokenKey = Common.TOKEN + "_" + catalog + "_" + uuid;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //校验token
 | 
				
			||||||
 | 
					        boolean checkResult = check(token, tokenKey);
 | 
				
			||||||
 | 
					        if (checkResult) {
 | 
				
			||||||
 | 
					            String newTokenCache = (String) this.redisTemplate.opsForHash().get(tokenKey + "_n", Common.TOKEN);
 | 
				
			||||||
 | 
					            return new GeneralResult<>(true, newTokenCache, "校验token成功");
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return new GeneralResult<>(false, "token校验失败");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private boolean check(String token, String tokenKey) {
 | 
					    private boolean check(String token, String tokenKey) {
 | 
				
			||||||
        String newTokenCache = (String) this.redisTemplate.opsForHash().get(tokenKey + "_n", Common.TOKEN);
 | 
					        String newTokenCache = (String) this.redisTemplate.opsForHash().get(tokenKey + "_n", Common.TOKEN);
 | 
				
			||||||
        if (token.equals(newTokenCache)) {
 | 
					        if (token.equals(newTokenCache)) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue