| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package cn.com.goldenwater.dcproj.controller.system;
- import cn.com.goldenwater.core.web.BaseController;
- import cn.com.goldenwater.core.web.BaseResponse;
- import cn.com.goldenwater.dcproj.constValue.CommonLabel;
- import cn.com.goldenwater.dcproj.dto.LoginUser;
- import cn.com.goldenwater.dcproj.utils.JWTTokenUtil;
- import cn.com.goldenwater.id.util.UuidUtil;
- import io.swagger.annotations.Api;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RestController;
- import javax.servlet.http.HttpServletRequest;
- import java.util.concurrent.TimeUnit;
- @Api(value = "auth token", tags = "011 accessToken校验接口")
- @RestController
- @RequestMapping("/auth")
- public class AuthController extends BaseController {
- @Autowired
- private RedisTemplate redisTemplate;
- @RequestMapping(value = "/refresh", method = RequestMethod.POST)
- public BaseResponse refresh(HttpServletRequest request) {
- String uuid = request.getHeader(CommonLabel.ACCESS_TOKEN);
- String persId = request.getHeader(CommonLabel.PERSID);
- String accessToken = (String) redisTemplate.opsForValue().get(uuid);
- if (StringUtils.isBlank(accessToken) || "null".equals(accessToken)) {
- String key = uuid + persId;
- // 获取refreshtoken,解析
- String refreshtoken = (String) redisTemplate.opsForValue().get(key);
- if (StringUtils.isBlank(refreshtoken) || "null".equals(refreshtoken)) {
- return buildFailResponse(9992, "太长时间未登录,请退出后重新登录!!");
- }
- LoginUser user = JWTTokenUtil.getObject(refreshtoken, persId);
- if (user != null && user.getPersId().equals(persId)) {
- String newToken = UuidUtil.uuid();
- //BisInspAllRlationPers bisInspAllRlationPers=bisInspAllRlationPersService.get(persId);
- accessToken = JWTTokenUtil.sign(user, user.getPersId());
- redisTemplate.opsForValue().set(newToken, accessToken, JWTTokenUtil.maxAge, TimeUnit.MILLISECONDS);
- redisTemplate.opsForValue().set(newToken + persId, accessToken, JWTTokenUtil.refreshmaxAge, TimeUnit.MILLISECONDS);
- redisTemplate.delete(key);
- //bisInspAllRlationPersService.sendChannel(newToken,bisInspAllRlationPers,request, PlusEnum.ADD.getNumber());
- BaseResponse baseResponse = buildSuccessResponse(12345, "token刷新成功!", newToken);
- baseResponse.setAccessToken(newToken);
- return baseResponse;
- }
- return buildFailResponse(9992, "请退出后重新登录!!");
- } else {
- LoginUser user = JWTTokenUtil.unsign(accessToken, persId);
- if (user != null) {
- BaseResponse baseResponse = buildSuccessResponse(12345, "token有效,可继续使用", uuid);
- baseResponse.setAccessToken(uuid);
- accessToken = JWTTokenUtil.sign(user, persId);
- redisTemplate.opsForValue().set(uuid, accessToken, JWTTokenUtil.maxAge, TimeUnit.MILLISECONDS);
- redisTemplate.opsForValue().set(uuid + persId, accessToken, JWTTokenUtil.refreshmaxAge, TimeUnit.MILLISECONDS);
- return baseResponse;
- }
- }
- return buildFailResponse("刷新token失败");
- }
- }
|