当前位置: 首页 > 知识库问答 >
问题:

通过路径模式排除Spring请求处理程序拦截器

周麒
2023-03-14

我知道我们可以将不同的url映射到不同的拦截器,或者我们也可以将多个url映射到单个拦截器。我只是想知道我们是否也有排除选项。例如,如果我在应用程序中有50个url映射,除了1个映射之外,我想为所有这些调用拦截器,而不是为49个映射编写配置,那么我可以只提到*和一个排除到第50个url吗?

共有3个答案

宋和颂
2023-03-14

我认为在Spring 2.0版本中,这已经改变了很多。下面是您可以轻松添加和配置路径模式的实现。

@Component
public class ServiceRequestAppConfig implements WebMvcConfigurer {

    @Autowired
    ServiceRequestInterceptor sri;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        String pathPattern = "/admin/**";
        registry.addInterceptor(sri).excludePathPatterns(pathPattern);
    }

}


@Component
public class ServiceRequestInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        // Your logic
        return true;
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex){
         // Some useful techniques
    }

}
白修谨
2023-03-14

就我而言:

/api/v1/用户管理器服务/租户/添加

PathPattern配置不正确:

 @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new RequestInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/tenants/**");
    }

我失踪了:

/**

在实际路径之前。

修正后,它的工作原理如预期:

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new RequestInterceptor())
            .addPathPatterns("/**")
            .excludePathPatterns("/**/tenants/**");
}
凌轶
2023-03-14

HandlerInterceptors可以应用于或排除(多个)特定的url或url模式

请参阅MVC拦截器配置。

以下是文档中的示例

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LocaleInterceptor());
        registry.addInterceptor(new ThemeInterceptor()).addPathPatterns("/**").excludePathPatterns("/admin/**");

        // multiple urls (same is possible for `exludePathPatterns`)
        registry.addInterceptor(new SecurityInterceptor()).addPathPatterns("/secure/*", "/admin/**", "/profile/**");
    }
}

或者使用XML配置

<mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <mvc:exclude-mapping path="/admin/**"/>
        <bean class="org.springframework.web.servlet.theme.ThemeChangeInterceptor"/>
    </mvc:interceptor>
    <mvc:interceptor>
        <!-- intercept multiple urls -->
        <mvc:mapping path="/secure/*"/>
        <mvc:mapping path="/admin/**"/>
        <mvc:mapping path="/profile/**"/>
        <bean class="org.example.SecurityInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>
 类似资料:
  • 本文向大家介绍SpringCloud通用请求字段拦截处理方法,包括了SpringCloud通用请求字段拦截处理方法的使用技巧和注意事项,需要的朋友参考一下 背景 以SpringCloud构建的微服务系统为例,使用前后端分离的架构,每个系统都会提供一些通用的请求参数,例如移动端的系统版本信息、IMEI信息,Web端的IP信息,浏览器版本信息等,这些参数可能放在header里,也可以放在参数里,如果这

  • 我最近几天在玩Spring拦截器,想通过拦截器捕捉和处理特定的请求。我要做的是在每个请求被特定的控制器处理之前拦截它,检查请求是否包含特定的参数。如果是,做一些事情,然后将这些事情签名到映射请求的控制器。 最后,我设法做到了这一点,但当我使用不同的参数值一次执行多个请求时,只有来自上一个请求的参数值被分配给每个控制器处理程序,甚至每个控制器都应该有包含在请求中的参数。 示例(同时执行): http

  • 我正在尝试做一个基本的Spring SecurityD/B身份验证程序。我试过两种方法。 方法1:使用自定义表进行Spring Security验证<方法2:使用特定于Spring security的数据库表进行用户身份验证和授权。 文件位置: 1.index.jsp- 对于方法1,Spring security并没有拦截请求,我在控制台中也并没有看到错误。我没有截获这个请求,而是直接接受了邀请。

  • 一、拦截请求 mitmproxy的强大功能是拦截请求。拦截的请求将暂停,以便用户可以在将请求发送到服务器之前修改(或丢弃)该请求。mitmproxy的set intercept命令配置拦截。i默认情况下,该命令绑定到快捷方式。 通常不希望拦截所有请求,因为它会不断中断您的浏览。因此,mitmproxy希望将流过滤器表达式作为set intercept选择性拦截请求的第一个参数。在下面的教程中,我们

  • 主要内容:实现,步骤 1,Filter.java,步骤 2,AuthenticationFilter.java,DebugFilter.java,步骤 3,Target.java,步骤 4,FilterChain.java,步骤 5,FilterManager.java,步骤 6,Client.java,步骤 7,InterceptingFilterDemo.java,步骤 8拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理。

  • 拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理。定义过滤器,并在把请求传给实际目标应用程序之前应用在请求上。过滤器可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体。 过滤器(Filter) - 过滤器在请求处理程序执行请求之前或之后,执行某些任务。 过滤器链(Filter Cha