春天安全
我遇到了使用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