• 喜欢前端以及PHP的朋友们可以加PHP同好会QQ群 点击加入qq群
  • 最近在写一个项目---"小A微信托管平台",大家可以去帮忙测试一下!功能在不断完善中,敬请关注!点击进入
  • 本站使用了PHP8.1与HTTP2.0协议,速度简直超级快有木有?

Spring Boot2 学习笔记之集成Filter(六)

后端 Mr.Adam 4年前 (2021-04-06) 1651次浏览 已收录 0个评论

Spring Boot2 学习笔记之集成 Filter(六)

Spring Boot2 学习笔记之集成 Filter(六)

java 中的 filter 类似于 php 和 node 中的中间件 middleware,叫法不同但用法类似

Spring Boot会自动扫描所有的FilterRegistrationBean类型的Bean,然后,将它们返回的 Filter 自动注册到 Servlet 容器中,无需任何配置。
创建一个名为 filter 的 package,里面创建一个 class 文件AuthFilterRegistrationBean.class

@Slf4j
@Order(10)
@Component
public class AuthFilterRegistrationBean extends FilterRegistrationBean<Filter> {

    @Override
    public Filter getFilter() {
        return new AuthFilter();
    }
    
    //针对部分 url 生效
    @PostConstruct
    public void init() {
        setFilter(new AuthFilter());
        List<String> urls = new ArrayList<>();
        urls.add("/");
        urls.add("/user/*");
        urls.add("/api/*");
        urls.add("/get_headers");
        setUrlPatterns(urls);
    }

    class AuthFilter implements Filter {

        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            log.info("doFilter:check authentication");
            HttpServletRequest req = (HttpServletRequest) request;
            HttpServletResponse res = (HttpServletResponse) response;
            String url = req.getRequestURI();
            String token = req.getHeader("token");
            log.info("url:{}",url);
            log.info("token:{}",token);
            if(token == null){
                res.sendError(500);
            }else{
                chain.doFilter(request,response);
            }
        }
    }
}

小 A 空间 , 版权所有丨如未注明转载 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Spring Boot2 学习笔记之集成 Filter(六)
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址