Commit 7ac9c3c1 by stylefeng

完善验证token失效的方法

parent 4f688579
...@@ -2,6 +2,7 @@ package com.stylefeng.guns.rest.auth; ...@@ -2,6 +2,7 @@ package com.stylefeng.guns.rest.auth;
import com.stylefeng.guns.rest.config.properties.JwtProperties; import com.stylefeng.guns.rest.config.properties.JwtProperties;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtException;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -52,6 +53,16 @@ public class JwtTokenUtil implements Serializable { ...@@ -52,6 +53,16 @@ public class JwtTokenUtil implements Serializable {
return claimsResolver.apply(claims); return claimsResolver.apply(claims);
} }
public Boolean validateToken(String token) {
try {
//判断是否能解析出token
Jwts.parser().setSigningKey(jwtProperties.getSecret()).parseClaimsJws(token).getBody();
return true;
} catch (JwtException e) {
return false;
}
}
private Claims getAllClaimsFromToken(String token) { private Claims getAllClaimsFromToken(String token) {
return Jwts.parser() return Jwts.parser()
.setSigningKey(jwtProperties.getSecret()) .setSigningKey(jwtProperties.getSecret())
......
...@@ -24,28 +24,23 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { ...@@ -24,28 +24,23 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
private JwtProperties jwtProperties; private JwtProperties jwtProperties;
@Override @Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
if (request.getServletPath().equals("/" + jwtProperties.getAuthPath())) { if (request.getServletPath().equals("/" + jwtProperties.getAuthPath())) {
chain.doFilter(request, response); chain.doFilter(request, response);
return; return;
} }
final String requestHeader = request.getHeader(jwtProperties.getHeader()); final String requestHeader = request.getHeader(jwtProperties.getHeader());
String username = null;
String authToken = null; String authToken = null;
if (requestHeader != null && requestHeader.startsWith("Bearer ")) { if (requestHeader != null && requestHeader.startsWith("Bearer ")) {
authToken = requestHeader.substring(7); authToken = requestHeader.substring(7);
try { boolean flag = jwtTokenUtil.validateToken(authToken);
username = jwtTokenUtil.getUsernameFromToken(authToken); if (!flag) {
} catch (IllegalArgumentException e) { logger.error("token验证错误");
logger.error("an error occured during getting username from token", e); throw new RuntimeException("token验证错误");
return;
} }
} else { } else {
logger.warn("couldn't find bearer string, will ignore the header"); logger.warn("错误的header");
return; throw new RuntimeException("错误的header");
} }
chain.doFilter(request, response); chain.doFilter(request, response);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment