gpt4 book ai didi

java - 跳过 Jersey 中特定资源的请求过滤器

转载 作者:太空宇宙 更新时间:2023-11-04 14:04:01 25 4
gpt4 key购买 nike

我正在开发一个 Jersey 项目,我使用 token 身份验证,并使用 ContainerRequestFilter 来过滤所有请求并检查它是否具有 token ,但请求包括登录和注册请求,但我们需要跳过这些请求。我如何跳过登录和注册请求的过滤? jersey 中是否有任何机制可以实现此目的?

谢谢

最佳答案

据我所知,使用原始部署描述符 (web.xml) 无法实现此类行为。

但是,如果这是自定义过滤器,您可以使用 doFilter() 方法中对请求网址进行简单检查,使其跳过排除的路径。但由于您使用的是第三方过滤器,这不是可行的方法,但仍然可以实现此功能:

  1. 将第三方过滤器 (ContainerRequestFilter) 映射更改为另一路径而不是通配符路径:

    <filter-mapping>
    <filter-name>containerRequestFilter</filter-name>
    <url-pattern>/tokenizedpaths/*</url-pattern>
    </filter-mapping>
  2. 声明一个新的过滤器(您很快就会看到它的样子),该过滤器将映射到通配符路径来过滤所有请求,并仅当请求路径与排除的路径不匹配时才将其委托(delegate)将请求分派(dispatch)到您的containerRequestFilter(我选择注册作为示例):

    <filter>
    <filter-name>filteringFilter</filter-name>
    <filter-class>com.sample.FilteringServletFilter</filter-class>
    <init-param>
    <param-name>excludedPaths</param-name>
    <param-value>/register</param-value>
    </init-param>
    </filter>
  3. FilteringServletFilter 将如下所示:

    public class FilteringServletFilter implements Filter {

    private List<String> excludedPaths = new ArrayList<String>();

    public void init(FilterConfig config) throws ServletException {
    // You can declare a comma separated list to hold your excluded paths
    this.excludedPaths = Arrays.asList(config.getInitParameter("excludedPaths").split(","));
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    String path = ((HttpServletRequest) request).getRequestURI();
    // If the url is one of excluded paths, then just continue with next filter
    if (this.excludedPaths.contains(path)) {
    chain.doFilter(request, response);
    return;
    }
    // Otherwilse, forward the request to the needed filter
    else {
    request.getRequestDispatcher("/tokenizedpaths" + path).forward(request, response);
    }
    }

    }

关于java - 跳过 Jersey 中特定资源的请求过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29048327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com