Spring Security Interceptor-URL无效

时间:2011-10-25 14:48:02

标签: java spring java-ee spring-security

我正在使用Spring Security 3.0.3进行项目。

该项目有3个区域,可供不同的人使用

因此我创建了以下结构   - WEB-INF /(对于每个人=未受保护)   - WEB-INF / app(对于users = ROLE_USER)   - WEB-INF / app / admin.jsf(对于admins = ROLE_ADMIN)

admin.jsf在同一个目录中我不能不幸地改变。

我的用户信息是从数据库加载的。

它们的定义如下:

<bean id="preAuthenticatedProcessingFilterEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint"/> <security:http entry-point-ref="preAuthenticatedProcessingFilterEntryPoint" >
   <security:custom-filter position="PRE_AUTH_FILTER" ref="MyFilter"/>
   <security:intercept-url pattern="/app/admin.jsf" access="ROLE_ADMIN" />         
   <security:intercept-url pattern="/app/**" access="ROLE_USER" />
   <security:intercept-url pattern="/**" access="" />
</security:http>

现在,一切都很好。加载了用户数据,根据数据库设置了角色,但不幸的是

  • 所有人都可以访问未受保护的区域(好的)
  • 管理员可以查看每个页面(因为它们也是ROLE_USER)
  • 角色用户无法在应用中输入页面

有没有人暗示我做错了什么? 我在本地测试它,浏览器网址是:http://localhost:8080/my_app/app/admin.jsf


到目前为止,我能够确定Spring安全性忽略了我的角色的问题根源。截取网址的模式是有效的,不幸的是我定义的角色没有。


我终于能够确定问题:一位同事检查了第二个配置文件,我修改了错误的配置文件。 GRML

1 个答案:

答案 0 :(得分:2)

问题是配置中的模式是URL模式,这不是jsf文件的位置或应用程序中的位置。

因此,如果您没有通过http://<server>:<port>/<ApplicationName>/app/admin.jsf访问此jsf,那么您只需要将URL模式更正为您真正使用的网址。