欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

解决SpringMVC拦截器path路径的坑

时间:2023-01-23 08:25:14|栏目:JAVA代码|点击:

SpringMVC拦截器path路径的坑

SpringMVC提供了很方便的拦截器供我们开发使用。在配置文件中通过<mvc:mapping path="" />进行配置拦截的路径,但是这个path在配置的时候有一个小坑

我们都知道在SpringMVC拦截器中的/**是配置全部路径.现在我有一个需求,想要拦截以/user/开头的请求.我的path写为/user/**,这样就能拦截到所有的符号条件的请求.

然后我的项目需求增加了,我在项目中加入了多重权限控制并希望用拦截器去控制它.假设现在有个功能,只开放给管理员,所以我把它的访问路径设为/user/manager/xxxx/xxxx.所以我又加入了一个拦截器,希望拦截路径中存在/manager/的所有的请求.我把path写为/manager/'**,结果却不行.

user的拦截器正常,但是manager的拦截器却不工作,我一度以为是拦截器出现了错误.然后经过一下午检查,我发现我把路径改成/manager/user/xxxx/xxxx就变成了manager拦截器工作但user拦截器不工作.我就确定是path出了问题.

在一次次修改尝试后,我明白了,原来/user/**只适用于以/user/开头的请求,/user/的前面什么都不能有,由于我所有的请求都是/user/开头,所以user的拦截器一直都是可以正常运行的,但是manager拦截器就不同了,我的path写为/manager/**,但是我所有带有/manager/的请求都是前面有/user/的,所以这不满足path路径中的/manager/**.当你要在这个名称的前面加其他的一个名称时,你需要/*/manager/**,如果前面有多个名称,就是/**/manager/**,当然了,由于/**是通配符,所以以manager开头的url也符合这个条件.

SpringMVC拦截器设置多个path

设置多个path

同一个拦截器如果想指定多个path,直接顺序添加多个<mvc:mapping path="" />即可:

<!-- 拦截器 -->
<mvc:interceptors>
 <!-- 多个拦截器,顺序执行 -->
 <!-- 如果不配置或/**,将拦截所有的Controller -->
 <!-- 注意,匹配任意地址时注意是2个“*”号不是1个“*”号 -->
 <mvc:interceptor>
  <mvc:mapping path="/aaa/**" />
  <mvc:mapping path="/bbb/**" />
  <bean class="com.test.blog.interceptor.AccessInterceptor">
   <property name="protectedUrls">
    <list>
     <value>edit</value>
     <value>add</value>
    </list>
   </property>
  </bean>
 </mvc:interceptor>
</mvc:interceptors>

上一篇:springboot参数传中文乱码的解决方案

栏    目:JAVA代码

下一篇:Netty分布式ByteBuf使用命中缓存的分配解析

本文标题:解决SpringMVC拦截器path路径的坑

本文地址:http://www.codeinn.net/misctech/224271.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有