userholder
public class UserHolder { private static ThreadLocal<String> userThreadLocal = new ThreadLocal<>(); //为当前的线程变量赋值上用户信息 public static void setLoginUser(String user) { userThreadLocal.set(user); } //从当前线程变量中获取用户信息 public static String getLoginUser() { return userThreadLocal.get(); } public static void removeUser() { userThreadLocal.remove(); } }
filter
import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Component public class TokenAuthenticationFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String header = request.getHeader("token"); if(header != null){ // UserHolder.setLoginUser("xiaosu"); } UserHolder.setLoginUser("xiaoai"); filterChain.doFilter(request,response); } }
interceptor
import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class UserInterpector implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String header = request.getHeader("token"); if(header != null){ // UserHolder.setLoginUser("xiaosu"); } UserHolder.setLoginUser("inter ---xiaoai"); return true; } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { UserHolder.removeUser(); } }
- interceptor springboot filterinterceptor springboot filter 切面 过滤器interceptor filter 过滤器interceptor filter applicationcontextaware interceptor springboot springboot filter springboot resource filter问题 handlerinterceptor过滤器springboot filter springboot实战listener filter 全局springboot traceid filter 容器springboot servlet filter