双token
parent
81b9111a57
commit
20a2c852e6
|
@ -1,16 +1,21 @@
|
|||
package com.mall.auth.controller;
|
||||
|
||||
import com.mall.auth.service.AuthService;
|
||||
import com.mall.common.constant.JwtConstants;
|
||||
import com.mall.common.constant.TokenConstants;
|
||||
import com.mall.common.domain.UserInfo;
|
||||
import com.mall.common.domain.request.LoginRequest;
|
||||
import com.mall.common.domain.vo.LoginVo;
|
||||
import com.mall.common.domain.vo.UserInfoVo;
|
||||
import com.mall.common.result.Result;
|
||||
import com.mall.common.utils.IdUtils;
|
||||
import com.mall.common.utils.JwtUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* @Author: lzh
|
||||
|
@ -77,4 +82,9 @@ public class AuthController {
|
|||
Result<UserInfo> result = authService.userInfo();
|
||||
return result;
|
||||
}
|
||||
|
||||
@GetMapping("refreshToken")
|
||||
public Result refreshToken(@RequestParam String refreshToken){
|
||||
return authService.refreshToken(refreshToken);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,4 +16,7 @@ public interface AuthService {
|
|||
Result phoneRegister(UserInfoVo userInfo);
|
||||
|
||||
Result<UserInfo> userInfo();
|
||||
|
||||
Result refreshToken(String refreshToken);
|
||||
|
||||
}
|
||||
|
|
|
@ -55,19 +55,20 @@ public class AuthServiceImpl implements AuthService {
|
|||
Assert.notNull(
|
||||
data,"用户不存在"
|
||||
);
|
||||
// String password = SecureUtil.md5(
|
||||
// loginVo.getPassword()+ "|" + data.getSalt()
|
||||
// );
|
||||
if (!loginVo.getPassword().equals(data.getPassword())){
|
||||
throw new BizException("密码错误") ;
|
||||
}
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put(JwtConstants.USER_KEY,data.getId());
|
||||
String token = JwtUtils.createToken(map);
|
||||
redisCache.setCacheObject(TokenConstants.LOGIN_TOKEN_KEY+token,data,TokenConstants.EXPIRATION, TimeUnit.HOURS);
|
||||
String refreshToken = JwtUtils.createToken(map);
|
||||
redisCache.setCacheObject(TokenConstants.TOKEN+token,data,TokenConstants.EXPIRATION, TimeUnit.HOURS);
|
||||
redisCache.setCacheObject(TokenConstants.REFRESH_TOKEN+refreshToken,data,TokenConstants.REFRESH_TIME,TimeUnit.HOURS);
|
||||
JwtResponse jwtResponse = new JwtResponse();
|
||||
jwtResponse.setToken(token);
|
||||
jwtResponse.setEndTim(TokenConstants.EXPIRATION);
|
||||
jwtResponse.setEndTime(TokenConstants.EXPIRATION);
|
||||
jwtResponse.setRefreshToken(refreshToken);
|
||||
jwtResponse.setRefreshEndTime(TokenConstants.REFRESH_TIME);
|
||||
return Result.success(jwtResponse);
|
||||
}
|
||||
|
||||
|
@ -110,10 +111,10 @@ public class AuthServiceImpl implements AuthService {
|
|||
String userKey = IdUtils.genId();
|
||||
map.put(JwtConstants.USER_KEY,userKey);
|
||||
String token = JwtUtils.createToken(map);
|
||||
redisCache.setCacheObject(TokenConstants.LOGIN_TOKEN_KEY+token,data,TokenConstants.EXPIRATION, TimeUnit.HOURS);
|
||||
redisCache.setCacheObject(TokenConstants.TOKEN+token,data,TokenConstants.EXPIRATION, TimeUnit.MINUTES);
|
||||
JwtResponse jwtResponse = new JwtResponse();
|
||||
jwtResponse.setToken(token);
|
||||
jwtResponse.setEndTim(TokenConstants.EXPIRATION);
|
||||
jwtResponse.setEndTime(TokenConstants.EXPIRATION);
|
||||
return Result.success(jwtResponse);
|
||||
}
|
||||
|
||||
|
@ -149,11 +150,21 @@ public class AuthServiceImpl implements AuthService {
|
|||
|
||||
@Override
|
||||
public Result<UserInfo> userInfo() {
|
||||
String token = request.getHeader(TokenConstants.LOGIN_TOKEN_KEY);
|
||||
String token = request.getHeader(TokenConstants.TOKEN);
|
||||
if (StringUtils.isBlank(token)){
|
||||
throw new BizException(401,"未登录");
|
||||
}
|
||||
UserInfo userInfo = redisCache.getCacheObject(TokenConstants.LOGIN_TOKEN_KEY + token);
|
||||
UserInfo userInfo = redisCache.getCacheObject(TokenConstants.TOKEN + token);
|
||||
return Result.success(userInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result refreshToken(String refreshToken) {
|
||||
UserInfo userInfo = redisCache.getCacheObject(TokenConstants.REFRESH_TOKEN + refreshToken);
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put(JwtConstants.USER_KEY, IdUtils.genId());
|
||||
String token = JwtUtils.createToken(map);
|
||||
redisCache.setCacheObject(TokenConstants.TOKEN+token,userInfo,TokenConstants.EXPIRATION,TimeUnit.MINUTES);
|
||||
return Result.success(token);
|
||||
}
|
||||
}
|
|
@ -16,9 +16,13 @@ public class TokenConstants {
|
|||
/**
|
||||
* 权限缓存前缀
|
||||
*/
|
||||
public final static String LOGIN_TOKEN_KEY = "login_tokens:";
|
||||
public final static String LOGIN_TOKEN_KEY = "login_tokens";
|
||||
/**
|
||||
* token标识
|
||||
*/
|
||||
public static final String TOKEN = "token";
|
||||
/**
|
||||
* refreshToken标识
|
||||
*/
|
||||
public static final String REFRESH_TOKEN = "refresh_token";
|
||||
}
|
||||
|
|
|
@ -17,5 +17,9 @@ import lombok.NoArgsConstructor;
|
|||
@NoArgsConstructor
|
||||
public class JwtResponse {
|
||||
private String token;
|
||||
private Long endTim;
|
||||
private Long endTime;
|
||||
|
||||
private String refreshToken;
|
||||
private Long refreshEndTime;
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
package com.mall.gateway.filters;
|
||||
import com.mall.common.constant.JwtConstants;
|
||||
import com.mall.common.constant.TokenConstants;
|
||||
import com.mall.common.domain.UserInfo;
|
||||
import com.mall.common.redis.RedisCache;
|
||||
import com.mall.common.utils.IdUtils;
|
||||
import com.mall.common.utils.JwtUtils;
|
||||
import com.mall.common.utils.StringUtils;
|
||||
import com.mall.gateway.config.IgnoreWhiteConfig;
|
||||
|
@ -18,6 +21,10 @@ import org.springframework.stereotype.Component;
|
|||
import org.springframework.web.server.ServerWebExchange;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @description: 鉴权过滤器
|
||||
* @author DongZl
|
||||
|
@ -58,7 +65,7 @@ public class AuthFilter implements GlobalFilter, Ordered {
|
|||
|
||||
Claims claims = JwtUtils.parseToken(token);
|
||||
if (claims == null) {
|
||||
return GatewayUtils.errorResponse(exchange, "令牌已过期或验证不正确!");
|
||||
return GatewayUtils.errorResponse(exchange, "验证不正确!");
|
||||
}
|
||||
|
||||
boolean login = redisCache.hasKey(TokenConstants.TOKEN + token);
|
||||
|
|
|
@ -206,11 +206,11 @@ public class SpikesServiceImpl extends ServiceImpl<SpikesMapper, SpikesEntity>
|
|||
}
|
||||
|
||||
public UserInfo getLogin(){
|
||||
String token = request.getHeader(TokenConstants.LOGIN_TOKEN_KEY);
|
||||
String token = request.getHeader(TokenConstants.TOKEN);
|
||||
if (StringUtils.isBlank(token)){
|
||||
throw new BizException(401,"未登录");
|
||||
}
|
||||
UserInfo userInfo = redisCache.getCacheObject(TokenConstants.LOGIN_TOKEN_KEY + token);
|
||||
UserInfo userInfo = redisCache.getCacheObject(TokenConstants.TOKEN + token);
|
||||
return userInfo;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue