美文网首页
SpringBoot 增加过滤器

SpringBoot 增加过滤器

作者: 原始人y | 来源:发表于2021-03-30 11:30 被阅读0次

1、创建一个filter 过滤器类,并集成 OncePerRequestFilter
OncePerRequestFilter,顾名思义,它能够确保在一次请求中只通过一次filter
2、实现代码如下:

@Component
@Order(0)
public class LogFilter extends OncePerRequestFilter {

    @Autowired
    private UserBehaviorLogService userBehaviorLogService;
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {

        try {
            Long start=System.currentTimeMillis();
            request.setAttribute("startTime",start);
//执行下一个拦截器
            filterChain.doFilter(request, response);
        } finally {
            String method=request.getRequestURI();
            if(!method.contains("swagger")&&!method.contains("api-docs")){
                Long start=(long)request.getAttribute("startTime");
                Long elapsedTime=System.currentTimeMillis()-start;
                Long userId= AuthUtils.getReqUserId(request)==null?0l: AuthUtils.getReqUserId(request);
                String ip=request.getRemoteAddr();
                UserBehaviorLog userBehaviorLog=new UserBehaviorLog();
                userBehaviorLog.setUserId(userId);
                userBehaviorLog.setElapsedTime(elapsedTime);
                userBehaviorLog.setMethod(method);
                userBehaviorLog.setIp(ip);
                userBehaviorLog.setVersion(request.getHeader("version"));
                userBehaviorLog.setDeviceType(request.getHeader("deviceType"));
//保存数据库
                userBehaviorLogService.save(userBehaviorLog);
            }
        }
    }
}
``

相关文章

网友评论

      本文标题:SpringBoot 增加过滤器

      本文链接:https://www.haomeiwen.com/subject/bgwwhltx.html