|
|
|
@ -8,28 +8,51 @@ |
|
|
|
package com.depsystem.app.systemServer.securityServer.securityFilter; |
|
|
|
package com.depsystem.app.systemServer.securityServer.securityFilter; |
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
|
|
|
|
import com.depsystem.app.loginServer.Login; |
|
|
|
|
|
|
|
import com.depsystem.app.systemServer.securityServer.entity.MyUserDetails; |
|
|
|
import com.depsystem.app.systemServer.util.JwtUtil; |
|
|
|
import com.depsystem.app.systemServer.util.JwtUtil; |
|
|
|
|
|
|
|
import com.depsystem.app.systemServer.util.RedisUtil; |
|
|
|
import io.jsonwebtoken.Claims; |
|
|
|
import io.jsonwebtoken.Claims; |
|
|
|
|
|
|
|
import jakarta.annotation.Resource; |
|
|
|
import jakarta.servlet.FilterChain; |
|
|
|
import jakarta.servlet.FilterChain; |
|
|
|
import jakarta.servlet.ServletException; |
|
|
|
import jakarta.servlet.ServletException; |
|
|
|
import jakarta.servlet.http.HttpServletRequest; |
|
|
|
import jakarta.servlet.http.HttpServletRequest; |
|
|
|
import jakarta.servlet.http.HttpServletResponse; |
|
|
|
import jakarta.servlet.http.HttpServletResponse; |
|
|
|
|
|
|
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; |
|
|
|
|
|
|
|
import org.springframework.security.core.Authentication; |
|
|
|
|
|
|
|
import org.springframework.security.core.context.SecurityContext; |
|
|
|
|
|
|
|
import org.springframework.security.core.context.SecurityContextHolder; |
|
|
|
import org.springframework.web.filter.OncePerRequestFilter; |
|
|
|
import org.springframework.web.filter.OncePerRequestFilter; |
|
|
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
import java.io.IOException; |
|
|
|
|
|
|
|
import java.util.Objects; |
|
|
|
|
|
|
|
|
|
|
|
public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { |
|
|
|
public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { |
|
|
|
|
|
|
|
@Resource |
|
|
|
|
|
|
|
RedisUtil redisUtil; |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { |
|
|
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { |
|
|
|
String token = request.getHeader("token"); |
|
|
|
String token = request.getHeader("token"); |
|
|
|
|
|
|
|
String usernameFromToken; |
|
|
|
|
|
|
|
|
|
|
|
if (StrUtil.isBlank(token)){ |
|
|
|
if (StrUtil.isBlank(token)){ |
|
|
|
filterChain.doFilter(request,response); |
|
|
|
filterChain.doFilter(request,response); |
|
|
|
} |
|
|
|
} |
|
|
|
try { |
|
|
|
try { |
|
|
|
JwtUtil.validateToken(token); |
|
|
|
usernameFromToken = JwtUtil.getUsernameFromToken(token); |
|
|
|
} catch (Exception e) { |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
e.printStackTrace(); |
|
|
|
throw new RuntimeException("token错误"); |
|
|
|
throw new RuntimeException("token错误"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String redisKey = "userinfo:"; |
|
|
|
|
|
|
|
MyUserDetails o = (MyUserDetails) redisUtil.get(redisKey); |
|
|
|
|
|
|
|
if (Objects.isNull(o)){ |
|
|
|
|
|
|
|
throw new RuntimeException("获取用户信息失败"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(o,null,null); |
|
|
|
|
|
|
|
SecurityContextHolder.getContext().setAuthentication(authentication); |
|
|
|
|
|
|
|
filterChain.doFilter(request,response); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|