问题描述:



建立Filter拦截器类
package com.ruoyi.framework.security.filter;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.web.service.TokenService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* token过滤器 验证token有效性
*
* @author ruoyi
*/
@Component
public class JwtAuthenticationTokenFilter implements Filter {
@Autowired
private TokenService tokenService;
@Value("${token.expireTime}")
private int expireTime;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
LoginUser loginUser = tokenService.getLoginUser(request);
if (StringUtils.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication())) {
tokenService.verifyToken(loginUser);
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities());
authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authenticationToken);
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
String value = cookie.getValue();
String builder = "JSESSIONID=" + value + "; " +
"Secure; " +
"HttpOnly; " +
"Expires=" + expireTime;
response.setHeader("Set-Cookie", builder);
}
}
}
filterChain.doFilter(request, response);
}
@Override
public void destroy() {
}
}




![[Linux+git+Gitee+Jenkins]持续集成实验安装配置详细](https://i-blog.csdnimg.cn/direct/c042769fa24142b8b5dcebedba50c910.png)









![[Spring] Spring Web MVC案例实战](https://i-blog.csdnimg.cn/direct/67dc72fef8b849c7b4cb4cfa552c0ead.png)



![[WUSTCTF2020]level4题解 入土为安的第三天](https://i-blog.csdnimg.cn/direct/f2868503c9a54caab950a19343be8179.png)

