首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring安全-拦截-url模式映射

Spring安全-拦截-url模式映射
EN

Stack Overflow用户
提问于 2013-01-05 04:52:48
回答 1查看 4.5K关注 0票数 1

我在使用spring security的应用程序中遇到了一个问题。我的安全配置文件中有以下http标签的配置:

代码语言:javascript
复制
 <http auto-config="true" use-expressions="true" path-type="regex">
     <intercept-url pattern="\A/hero.jsp/$?chooseHero=\Z" access="hasRole('ROLE_HERO')" />
     <intercept-url pattern="/.*" access="permitAll" />
     <logout logout-success-url="/" />              
 </http>

第一个intercept-url有问题-地址不匹配。这基本上意味着任何人都可以访问我的应用程序的/Herm.jsp/$?chooseHero=部分。我是不是遗漏了什么?仅当使用时:

代码语言:javascript
复制
   <intercept-url pattern="\A/hero.jsp\Z" access="hasRole('ROLE_HERO')" />

一切都运行得很好。

我已经实现了基于数据库的身份验证。

你能帮我解决这个问题吗?感谢您的任何提示或想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-05 22:33:57

第一个截取的URL必须是有效的正则表达式,它由RegexRequestMatcher处理。这是一个奇怪的正则表达式:

代码语言:javascript
复制
pattern="\A/hero.jsp/$?chooseHero=\Z"

为什么需要$?它是否意味着字面上的匹配(它在正则表达式中有特殊的含义)?我想是的..。此外,.?都有special meanings

假设您希望所有字符都按字面意思匹配,则必须如下所示:

代码语言:javascript
复制
pattern="\A/hero\.jsp/\$\?chooseHero=\Z"

但是,如果所有内容都完全匹配,那么为什么还需要正则表达式呢?您可能希望省去这些麻烦,只使用更简单的Ant-style matchers

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14164804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档