新增token验证,过期,续约

segment2.0
linrf 2 years ago
parent 3f34b0d49c
commit c203f62f9b

@ -50,7 +50,7 @@ public class GlobalResponseBodyAdvice implements ResponseBodyAdvice<Object> {
public Object defaultErrorHandler(HttpServletRequest req, Exception ex) {
if (ex instanceof ApiException) {
logger.info("{} 错误 ,code:{}, message:{}", req.getRequestURL(), ((ApiException) ex).getCode(), ex.getMessage());
return CommonResult.failed(ex.getMessage());
return CommonResult.failed(((ApiException) ex).getCode().toString(), ex.getMessage());
} else if (ex instanceof NoHandlerFoundException) {
logger.info("{} 错误 ,code:{}, message:{}", req.getRequestURL(), 404, ex.getMessage());
}

@ -1,12 +1,12 @@
package com.docus.server.api.recovery;
import com.docus.infrastructure.web.api.CommonResult;
import com.docus.infrastructure.web.request.SearchDTO;
import com.docus.infrastructure.web.response.PageResult;
import com.docus.server.dto.recovery.rcvsysuser.AddRcvSysUserDTO;
import com.docus.server.dto.recovery.rcvsysuser.DeleteRcvSysUserDTO;
import com.docus.server.dto.recovery.rcvsysuser.EditRcvSysUserDTO;
import com.docus.server.dto.recovery.rcvsysuser.LoginRcvSysUserDTO;
import com.docus.server.vo.recovery.UserInfoView;
import com.docus.server.vo.recovery.rcvsysuser.RcvSysUserVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.DeleteMapping;
@ -34,10 +34,11 @@ import java.util.List;
public interface RcvSysUserApi {
/**
*
*
* @return
*/
@PostMapping("/login")
UserInfoView login(@RequestBody LoginRcvSysUserDTO loginRcvSysUserDTO);
CommonResult<String> login(@RequestBody LoginRcvSysUserDTO loginRcvSysUserDTO);
/**
* 退

@ -41,18 +41,24 @@ public class TokenInterceptor extends HandlerInterceptorAdapter {
public TokenInterceptor(String tokenHeaderName, String userIdHeaderName, String tokenRedisKeyPrefix) {
this.tokenHeaderName = tokenHeaderName;
this.userIdHeaderName = userIdHeaderName;
tokenRedisKeyPrefix = tokenRedisKeyPrefix;
this.tokenRedisKeyPrefix = tokenRedisKeyPrefix;
}
public TokenInterceptor(String tokenHeaderName, String userIdHeaderName, String tokenRedisKeyPrefix, String userIdPropertyName) {
this.tokenHeaderName = tokenHeaderName;
this.userIdHeaderName = userIdHeaderName;
tokenRedisKeyPrefix = tokenRedisKeyPrefix;
this.tokenRedisKeyPrefix = tokenRedisKeyPrefix;
this.userIdPropertyName = userIdPropertyName;
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String path = request.getRequestURI();
// 跟swagger冲突跳出response包装
if (path.contains("swagger") || path.contains("api-docs") || path.contains("error") || path.contains("/monitor/url-mappings") || path.contains("doc.html")) {
//忽略验证
return super.preHandle(request, response, handler);
}
if (handler instanceof HandlerMethod) {
HandlerMethod handlerMethod = (HandlerMethod) handler;
Class<?> controller = handlerMethod.getMethod().getDeclaringClass();
@ -90,7 +96,7 @@ public class TokenInterceptor extends HandlerInterceptorAdapter {
String headerUserId = request.getHeader(userIdHeaderName);
if (!userId.equalsIgnoreCase(headerUserId)) {
//非法 token , token和userid不匹配
logger.info("token {} is not. match userId {}", token, headerUserId);
logger.info("token {} is not match userId {}", token, headerUserId);
throw new ApiException(ExceptionCode.TokenError);
}
//重置token过期时间

@ -1,5 +1,6 @@
package com.docus.server.controller;
import com.docus.infrastructure.web.api.CommonResult;
import com.docus.infrastructure.web.request.SearchDTO;
import com.docus.infrastructure.web.response.PageResult;
import com.docus.server.api.recovery.RcvSysUserApi;
@ -9,7 +10,6 @@ import com.docus.server.dto.recovery.rcvsysuser.DeleteRcvSysUserDTO;
import com.docus.server.dto.recovery.rcvsysuser.EditRcvSysUserDTO;
import com.docus.server.dto.recovery.rcvsysuser.LoginRcvSysUserDTO;
import com.docus.server.service.IRcvSysUserService;
import com.docus.server.vo.recovery.UserInfoView;
import com.docus.server.vo.recovery.rcvsysuser.RcvSysUserVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -36,11 +36,9 @@ public class RcvSysUserController implements RcvSysUserApi {
@Override
@ApiOperation("登录")
@IgnoreValidate
public UserInfoView login(LoginRcvSysUserDTO userDTO) {
public CommonResult<String> login(LoginRcvSysUserDTO userDTO) {
String token = iRcvSysUserService.doLogin(userDTO.getUserName(), userDTO.getUserPwd());
UserInfoView userInfoView = new UserInfoView();
userInfoView.setToken(token);
return userInfoView;
return CommonResult.success(token, "登录成功");
}
@ApiOperation("退出登录")

@ -354,6 +354,7 @@ public class RcvSysUserServiceImpl implements IRcvSysUserService {
UserInfoView userInfoview = new UserInfoView();
userInfoview.setToken(token);
userInfoview.setUserName(userName);
userInfoview.setUserId(userName);
userInfoview.setPassword(userPwd);
redisStringService.setValue(BusinessConstant.REDIS_KEY_USER_TOKEN_PREFIX + token, userInfoview, 3, TimeUnit.MINUTES);

Loading…
Cancel
Save