校验验证码接口改造支持双token

main
topsun 2 years ago
parent c998c5bad3
commit 5fbe1b6c8f

@ -23,6 +23,7 @@ public class InterceptorConfig implements WebMvcConfigurer {
registry.addInterceptor(jwtInterceptor())
.addPathPatterns("/**")//拦截的路径
.excludePathPatterns("/noauthTest")
.excludePathPatterns("/user")
.excludePathPatterns("/verification-code-check")
.excludePathPatterns("/verification-code");//不拦截的路径

@ -1,6 +1,7 @@
package com.taxi.apipassenger.interceptor;
import com.auth0.jwt.exceptions.TokenExpiredException;
import com.internal.contant.TokenConstant;
import com.internal.dto.ResponseResult;
import com.internal.dto.TokenResult;
import com.internal.util.JwtUtils;
@ -48,7 +49,7 @@ public class JwtInterceptor implements HandlerInterceptor {
//拼接tokenKey
String phone = tokenResult.getPassengerPhone();
String identity = tokenResult.getIdentity();
String tokenKey = RedisPrefixUtils.getTokenPrefixKey(phone,identity);
String tokenKey = RedisPrefixUtils.getTokenPrefixKey(phone,identity, TokenConstant.ACCESS_TOKEN_TYPE);
//从redis中取出token
String redisToke = stringRedisTemplate.opsForValue().get(tokenKey);
if(StringUtils.isBlank(redisToke)){

@ -2,6 +2,7 @@ package com.taxi.apipassenger.service;
import com.internal.contant.CommonStatusEnum;
import com.internal.contant.IdentityConstant;
import com.internal.contant.TokenConstant;
import com.internal.dto.ResponseResult;
import com.internal.request.VerificationCodeDTO;
import com.internal.response.CheckCodeResponse;
@ -68,16 +69,23 @@ public class VerificationCodeService {
verificationCodeDTO.setPassengerPhone(passenegerPhone);
servicePassengerUserClient.loginOrReg(verificationCodeDTO);
//四、颁发令牌
String token = JwtUtils.generatorToken(passenegerPhone,
IdentityConstant.PASSENGER_IDENTITY);
String accessToken = JwtUtils.generatorToken(passenegerPhone,
IdentityConstant.PASSENGER_IDENTITY, TokenConstant.ACCESS_TOKEN_TYPE);
String refreshToken = JwtUtils.generatorToken(passenegerPhone,
IdentityConstant.PASSENGER_IDENTITY,TokenConstant.REFRESH_TOKEN_TYPE);
//将token存入redis
String tokenKey = RedisPrefixUtils.getTokenPrefixKey(passenegerPhone,
IdentityConstant.PASSENGER_IDENTITY);
stringRedisTemplate.opsForValue().set(tokenKey,token,30,TimeUnit.DAYS);
//将accesstoken存入redis
String accessTokenKey = RedisPrefixUtils.getTokenPrefixKey(passenegerPhone,
IdentityConstant.PASSENGER_IDENTITY,TokenConstant.ACCESS_TOKEN_TYPE);
stringRedisTemplate.opsForValue().set(accessTokenKey,accessToken,30,TimeUnit.DAYS);
//将refreshToken存入redis
String refreshTokenKey = RedisPrefixUtils.getTokenPrefixKey(passenegerPhone,
IdentityConstant.PASSENGER_IDENTITY,TokenConstant.REFRESH_TOKEN_TYPE);
stringRedisTemplate.opsForValue().set(refreshTokenKey,refreshToken,31,TimeUnit.DAYS);
CheckCodeResponse checkCodeResponse = new CheckCodeResponse();
checkCodeResponse.setToken(token);
checkCodeResponse.setAccessToken(accessToken);
checkCodeResponse.setRefreshToken(refreshToken);
return ResponseResult.success(checkCodeResponse);
}
} else {

@ -11,4 +11,5 @@ public class IdentityConstant {
public static final String PASSENGER_IDENTITY = "1";
public static final String DRIVER_IDENTITY = "2";
}

@ -0,0 +1,15 @@
package com.internal.contant;
/**
* TOKEN
*/
public class TokenConstant {
/**
*
*/
public static final String ACCESS_TOKEN_TYPE = "accessToken";
public static final String REFRESH_TOKEN_TYPE = "refreshToken";
}

@ -6,6 +6,7 @@ import lombok.Data;
public class CheckCodeResponse {
private String token;
private String accessToken;
private String refreshToken;
}

@ -20,11 +20,14 @@ public class JwtUtils {
private static final String JWT_KEY_IDENTITY = "identity";
private static final String JWT_TOKEN_TYPE = "tokenType";
//生成token
public static String generatorToken(String passengerPhone,String identity) {
public static String generatorToken(String passengerPhone,String identity,String tokenType) {
Map<String, String> map = new HashMap<>();
map.put(JWT_KEY_PHONE,passengerPhone);
map.put(JWT_KEY_IDENTITY,identity);
map.put(JWT_TOKEN_TYPE,tokenType);
//token过期时间
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, 1);
@ -47,7 +50,7 @@ public class JwtUtils {
// Map<String, String> map = new HashMap<>();
// map.put("name", "zhang san");
// map.put("age", "19");
String s = generatorToken("1312312312","1");
String s = generatorToken("1312312312","1","accessToken");
System.out.println("生成的token: " + s);
TokenResult tokenResult = parseToken(s);
System.out.println("解析Token:" + tokenResult.getIdentity());

@ -12,8 +12,8 @@ public class RedisPrefixUtils {
* @param identity
* @return
*/
public static String getTokenPrefixKey(String passenegerPhone, String identity) {
return ApiPassengerConstant.TOKEN_PREFIX + passenegerPhone + "-" + identity;
public static String getTokenPrefixKey(String passenegerPhone, String identity,String tokenType) {
return ApiPassengerConstant.TOKEN_PREFIX + passenegerPhone + "-" + identity+ "-" + tokenType;
}

Loading…
Cancel
Save