在springboot中如何使用filter设置要排除的URL

2022-01-24 0 281
目录

使用filter设置要排除的URL

@WebFilter(urlPatterns = \"/*\")
@Order(value = 1)
public class TestFilter implements Filter {
 
    private static final Set<String> ALLOWED_PATHS = Collections.unmodifiableSet(new HashSet<>(
            Arrays.asList(\"/main/excludefilter\", \"/login\", \"/logout\", \"/register\")));
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println(\"init-----------filter\");
    }
 
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        String path = request.getRequestURI().substring(request.getContextPath().length()).replaceAll(\"[/]+$\", \"\");
        boolean allowedPath = ALLOWED_PATHS.contains(path);
 
        if (allowedPath) {
            System.out.println(\"这里是不需要处理的url进入的方法\");
            chain.doFilter(req, res);
        }
        else {
            System.out.println(\"这里是需要处理的url进入的方法\");
        }
    }
 
    @Override
    public void destroy() {
        System.out.println(\"destroy----------filter\");
    }
}

@Order中的value越小,优先级越高。

  • ALLOWED_PATHS

这个是一个集合,存放的是需要排出的URL,用来判断是否是需要排除的URL。

关于为什么SpringBoot中使用了@WebFilter但是过滤器却没有生效:一定要加上@Configuration注解,@Service其实也可以,其他类似。

filter指定过滤URL的常见问题

在使用Filter对一些自己指定的URL进行过滤拦截时

经常会出现如下错误

1、 明明在@WebFilter(urlPatterns={\"/app/online\"})中过滤的是/app/online 路径,但是运行之后发现,这个WebFilter过滤器对所有的URL都进行了过滤。

2、 运行之后发现过滤器没有初始化,没有被加载

下面总结一下使用正确的

合适的注解配置filter的方法:

1、 指定路径

在class 上添加注解@WebFilter(urlPatterns={\"/app/online\"})

然后在启动类(**Application.java )上添加注解@ServletComponentScan

即可。

代码如下:

2、 过滤所有路径

在class上添加@Component或@Configuration 即可

如果添加了@Component或@Configuration,又添加了@WebFilter(),那么会初始化两次Filter,并且会过滤所有路径+自己指定的路径便会出现对没有指定的URL也会进行过滤

//过滤所有路径
@Component
public class WebFilter implements Filter(){
//override三个方法
。。。
。。。
@Override
 public void init (FilterConfig filterConfig) throws ServletException{
 System.out.println(\"初始化filter\");
 }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 在springboot中如何使用filter设置要排除的URL http://www.20zxx.cn/297240/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务