我使用 spring-security 来保护我的 web,当我通过 spring-roo 在 applicationContext-security.xml 中生成的配置文件学习它时,在<http>
节点中:
<intercept-url pattern="/userses?form" access="hasRole('ROLE_ADMIN')" />
这意味着当您要创建用户对象时,首先您需要登录以获得管理员权限。但实际上并没有奏效。检查日志:
2012-05-06 11:39:11,250 [http-8088-7] DEBUG org.springframework.security.web.util.AntPathRequestMatcher - Checking match of request : '/userses'; against '/userses?form'
框架使用 /userses 而不是 /userses?form 进行比较,由于字符串不匹配而跳过身份验证过程。为了验证这一点,我还尝试了另一个网址:
<intercept-url pattern="/userses/abc" access="hasRole('ROLE_ADMIN')" />
我请求 /userses/abc,它检测到用户未授权,并移至 /login 页面,检查日志:
2012-05-06 11:46:44,343 [http-8088-7] DEBUG org.springframework.security.web.util.AntPathRequestMatcher - Checking match of request : '/uesrses/abc'; against '/userses/abc'
所以我的问题是:spring-secure 3不支持“?参数”模式还是我错过了一些配置来支持这个?PS:所有代码都是roo生成的,没有修改,也想知道为什么不起作用。