我正在使用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>
现在,一切都很好。加载了用户数据,根据数据库设置了角色,但不幸的是
有没有人暗示我做错了什么? 我在本地测试它,浏览器网址是:http://localhost:8080/my_app/app/admin.jsf
到目前为止,我能够确定Spring安全性忽略了我的角色的问题根源。截取网址的模式是有效的,不幸的是我定义的角色没有。
我终于能够确定问题:一位同事检查了第二个配置文件,我修改了错误的配置文件。 GRML
答案 0 :(得分:2)
问题是配置中的模式是URL模式,这不是jsf文件的位置或应用程序中的位置。
因此,如果您没有通过http://<server>:<port>/<ApplicationName>/app/admin.jsf
访问此jsf,那么您只需要将URL模式更正为您真正使用的网址。