提交 b5187dc7 编写于 作者: zhouweidong's avatar zhouweidong

token续期

上级 1e4f82c3
<#ibiztemplate>
TARGET=PSSYSTEM
</#ibiztemplate>
<#assign validExpiredToken=false>
<#if sys.getAllPSDevSlnMSDepAPIs()??>
<#list sys.getAllPSDevSlnMSDepAPIs() as depSysApi>
<#if ((depSysApi.getUserParam("ibiz.refreshtoken",""))!'') =="true">
<#assign validExpiredToken=true>
</#if>
</#list>
</#if>
package ${pub.getPKGCodeName()}.util.security;
import io.jsonwebtoken.ExpiredJwtException;
......@@ -23,15 +31,20 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.*;
<#if validExpiredToken>
import org.springframework.util.StringUtils;
import org.springframework.util.ObjectUtils;
</#if>
@Slf4j
@Component
public class AuthorizationTokenFilter extends OncePerRequestFilter {
<#if validExpiredToken>
@Value(${r'"${ibiz.jwt.expiration:7200000}"'})
private Long expiration;
</#if>
private final UserDetailsService userDetailsService;
private final AuthTokenUtil authTokenUtil;
private final String tokenHeader;
......@@ -71,6 +84,9 @@ public class AuthorizationTokenFilter extends OncePerRequestFilter {
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authentication);
<#if validExpiredToken>
validExpiredToken(authToken,response);
</#if>
}
}
chain.doFilter(request, response);
......@@ -99,4 +115,25 @@ public class AuthorizationTokenFilter extends OncePerRequestFilter {
return true;
}
}
<#if validExpiredToken>
/**
* 检查token是否到期
*
* @param authToken
* @param response
*/
private void validExpiredToken(String authToken, HttpServletResponse response) {
try {
Date token = authTokenUtil.getExpirationDateFromToken(authToken);
if (!ObjectUtils.isEmpty(token) && !ObjectUtils.isEmpty(expiration) &&
token.getTime() - (expiration / 4) <= System.currentTimeMillis()) {
if (StringUtils.isEmpty(response.getHeader("RefreshToken"))) {
response.setHeader("RefreshToken", "true");
}
}
} catch (Exception e) {
log.error("token有效期检查发生异常," + e);
}
}
</#if>
}
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册