You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.9 KiB
44 lines
1.9 KiB
package com.ruoyi.framework.security.filter; |
|
|
|
import java.io.IOException; |
|
import javax.servlet.FilterChain; |
|
import javax.servlet.ServletException; |
|
import javax.servlet.http.HttpServletRequest; |
|
import javax.servlet.http.HttpServletResponse; |
|
import org.springframework.beans.factory.annotation.Autowired; |
|
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 org.springframework.web.filter.OncePerRequestFilter; |
|
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; |
|
|
|
/** |
|
* token过滤器 验证token有效性 |
|
* |
|
* @author ruoyi |
|
*/ |
|
@Component |
|
public class JwtAuthenticationTokenFilter extends OncePerRequestFilter |
|
{ |
|
@Autowired |
|
private TokenService tokenService; |
|
|
|
@Override |
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) |
|
throws ServletException, IOException |
|
{ |
|
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); |
|
} |
|
chain.doFilter(request, response); |
|
} |
|
}
|
|
|