春天安全

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

 <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>

第一个拦截URL有问题 - 地址不匹配。 它基本上意味着任何人都可以访问我的应用程序的/hero.jsp/$?chooseHero=部分。 我错过了什么吗? 仅在使用时:

   <intercept-url pattern="A/hero.jspZ" access="hasRole('ROLE_HERO')" />

一切正常。

我有基于数据库的认证实施。

请问,有人能帮我解决这个问题吗? 感谢您提供任何提示或想法。


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

pattern="A/hero.jsp/$?chooseHero=Z"

为什么你需要$ ? 它的意思是直接匹配(它在正则表达式中有特殊含义)? 我想是的......另外, .? 有特殊的含义。

假设你想要所有的字符都是字面匹配的,它必须是这样的:

pattern="A/hero.jsp/$?chooseHero=Z"

但是,如果一切都完全相符,为什么你需要一个正则表达式呢? 您可能希望省去麻烦,只使用更简单的Ant式匹配器。

链接地址: http://www.djcxy.com/p/61829.html

上一篇: Spring security

下一篇: Spring Security doesn't "remember" login accross subdomains