fix(api): api文档token无法续命
This commit is contained in:
parent
38358fb2cb
commit
497c4d306b
@ -1,6 +1,7 @@
|
|||||||
package io.dataease.auth.filter;
|
package io.dataease.auth.filter;
|
||||||
|
|
||||||
import cn.hutool.core.util.ArrayUtil;
|
import cn.hutool.core.util.ArrayUtil;
|
||||||
|
import com.auth0.jwt.algorithms.Algorithm;
|
||||||
import io.dataease.auth.entity.SysUserEntity;
|
import io.dataease.auth.entity.SysUserEntity;
|
||||||
import io.dataease.auth.entity.TokenInfo;
|
import io.dataease.auth.entity.TokenInfo;
|
||||||
import io.dataease.auth.service.AuthUserService;
|
import io.dataease.auth.service.AuthUserService;
|
||||||
@ -9,6 +10,8 @@ import io.dataease.commons.license.DefaultLicenseService;
|
|||||||
import io.dataease.commons.license.F2CLicenseResponse;
|
import io.dataease.commons.license.F2CLicenseResponse;
|
||||||
import io.dataease.commons.utils.CommonBeanFactory;
|
import io.dataease.commons.utils.CommonBeanFactory;
|
||||||
import io.dataease.commons.utils.LogUtil;
|
import io.dataease.commons.utils.LogUtil;
|
||||||
|
import io.dataease.exception.DataEaseException;
|
||||||
|
import io.dataease.i18n.Translator;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.shiro.web.filter.AccessControlFilter;
|
import org.apache.shiro.web.filter.AccessControlFilter;
|
||||||
@ -37,10 +40,10 @@ public class F2CDocFilter extends AccessControlFilter {
|
|||||||
DefaultLicenseService defaultLicenseService = CommonBeanFactory.getBean(DefaultLicenseService.class);
|
DefaultLicenseService defaultLicenseService = CommonBeanFactory.getBean(DefaultLicenseService.class);
|
||||||
F2CLicenseResponse f2CLicenseResponse = defaultLicenseService.validateLicense();
|
F2CLicenseResponse f2CLicenseResponse = defaultLicenseService.validateLicense();
|
||||||
Status status = f2CLicenseResponse.getStatus();
|
Status status = f2CLicenseResponse.getStatus();
|
||||||
if (status != Status.valid) {
|
/*if (status != Status.valid) {
|
||||||
request.setAttribute(RESULT_URI_KEY, NOLIC_PAGE);
|
request.setAttribute(RESULT_URI_KEY, NOLIC_PAGE);
|
||||||
return false;
|
return false;
|
||||||
}
|
}*/
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
request.setAttribute(RESULT_URI_KEY, NOLIC_PAGE);
|
request.setAttribute(RESULT_URI_KEY, NOLIC_PAGE);
|
||||||
LogUtil.error(e.getMessage(), e);
|
LogUtil.error(e.getMessage(), e);
|
||||||
@ -76,6 +79,12 @@ public class F2CDocFilter extends AccessControlFilter {
|
|||||||
if (StringUtils.isBlank(authorization)) {
|
if (StringUtils.isBlank(authorization)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (JWTUtils.loginExpire(authorization)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (JWTUtils.needRefresh(authorization)) {
|
||||||
|
authorization = refreshToken(authorization);
|
||||||
|
}
|
||||||
TokenInfo tokenInfo = JWTUtils.tokenInfoByToken(authorization);
|
TokenInfo tokenInfo = JWTUtils.tokenInfoByToken(authorization);
|
||||||
AuthUserService authUserService = CommonBeanFactory.getBean(AuthUserService.class);
|
AuthUserService authUserService = CommonBeanFactory.getBean(AuthUserService.class);
|
||||||
SysUserEntity user = authUserService.getUserById(tokenInfo.getUserId());
|
SysUserEntity user = authUserService.getUserById(tokenInfo.getUserId());
|
||||||
@ -87,12 +96,29 @@ public class F2CDocFilter extends AccessControlFilter {
|
|||||||
return verify;
|
return verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String refreshToken(String token) throws Exception {
|
||||||
|
TokenInfo tokenInfo = JWTUtils.tokenInfoByToken(token);
|
||||||
|
AuthUserService authUserService = CommonBeanFactory.getBean(AuthUserService.class);
|
||||||
|
SysUserEntity user = authUserService.getUserById(tokenInfo.getUserId());
|
||||||
|
if (user == null) {
|
||||||
|
DataEaseException.throwException(Translator.get("i18n_not_find_user"));
|
||||||
|
}
|
||||||
|
String password = user.getPassword();
|
||||||
|
Algorithm algorithm = Algorithm.HMAC256(password);
|
||||||
|
JWTUtils.verifySign(algorithm, token);
|
||||||
|
String newToken = JWTUtils.sign(tokenInfo, password);
|
||||||
|
return newToken;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean onAccessDenied(ServletRequest req, ServletResponse res) throws Exception {
|
protected boolean onAccessDenied(ServletRequest req, ServletResponse res) throws Exception {
|
||||||
HttpServletResponse response = (HttpServletResponse) res;
|
HttpServletResponse response = (HttpServletResponse) res;
|
||||||
HttpServletRequest request = (HttpServletRequest) req;
|
HttpServletRequest request = (HttpServletRequest) req;
|
||||||
Object attribute = request.getAttribute(RESULT_URI_KEY);
|
Object attribute = request.getAttribute(RESULT_URI_KEY);
|
||||||
String path = ObjectUtils.isNotEmpty(attribute) ? attribute.toString() : DEFAULT_FAILED_PAGE;
|
String path = ObjectUtils.isNotEmpty(attribute) ? attribute.toString() : DEFAULT_FAILED_PAGE;
|
||||||
|
path += ("?_t" + System.currentTimeMillis());
|
||||||
|
response.setHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
|
||||||
|
response.setHeader("Expires", "0");
|
||||||
request.getRequestDispatcher(path).forward(request, response);
|
request.getRequestDispatcher(path).forward(request, response);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user