springboot filter 和 interceptor 使用

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");
        String requestURI = request.getRequestURI();
        if(header != null){
//            UserHolder.setLoginUser("xiaosu");
        }
//        UserHolder.set("xiaoai");
        try{
            filterChain.doFilter(request,response);
        }finally {
            UserHolder.remove();
        }
    }

}
复制代码

 

 

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();
    }
}
复制代码

 config

复制代码
import com.stepwise.script.interceptor.UserInterpector;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

//@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new UserInterpector());
    }
}
复制代码

 

posted @   冬马党  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示