【发布时间】:2011-12-15 00:32:25
【问题描述】:
我正在为一个项目使用 Spring Security 3.0.3。
这个项目有 3 个区域可供不同的人使用
因此我创建了以下结构 - WEB-INF/(所有人=不受保护) - WEB-INF/app(对于用户 = ROLE_USER) - WEB-INF/app/admin.jsf(对于管理员 = 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)
- 角色用户无法进入应用中的页面
有没有人暗示我做错了什么? 我在本地测试,浏览器url是:http://localhost:8080/my_app/app/admin.jsf
到目前为止,我能够确定 Spring Security 忽略我的角色的问题的根源。拦截网址的模式有效,不幸的是我定义的角色没有。
我终于能够确定问题所在:一位同事检查了第二个配置文件,但我修改了错误的配置文件。 grml
【问题讨论】:
-
ROLE_USER的用户尝试访问页面/app/abc.html时出现什么错误?
-
您的管理员视图是否通过以下方式请求:
http://<server>:<port>/<ApplicationName>/app/admin.jsf? -
@thait84: http 错误 403
-
@Ralph:是的,我就是这么称呼它的
标签: java spring jakarta-ee spring-security