提供给外部使用的token验证
							parent
							
								
									a592b9443d
								
							
						
					
					
						commit
						a9f1104178
					
				| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
package com.bocloud.sms.booter.controller;
 | 
			
		||||
 | 
			
		||||
import com.alibaba.fastjson.JSONObject;
 | 
			
		||||
import com.auth0.jwt.interfaces.Claim;
 | 
			
		||||
import com.bocloud.sms.interfaces.TenantService;
 | 
			
		||||
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.web.bind.annotation.GetMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.PostMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.RequestBody;
 | 
			
		||||
import org.springframework.web.bind.annotation.RestController;
 | 
			
		||||
 | 
			
		||||
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) {
 | 
			
		||||
        String newTokenCache = (String) this.redisTemplate.opsForHash().get(tokenKey + "_n", Common.TOKEN);
 | 
			
		||||
        if (token.equals(newTokenCache)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue