【问题标题】:Spring Security Interceptor-URL not workingSpring Security Interceptor-URL 不起作用
【发布时间】: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://&lt;server&gt;:&lt;port&gt;/&lt;ApplicationName&gt;/app/admin.jsf
  • @thait84: http 错误 403
  • @Ralph:是的,我就是这么称呼它的

标签: java spring jakarta-ee spring-security


【解决方案1】:

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

因此,如果您不是通过:http://&lt;server&gt;:&lt;port&gt;/&lt;ApplicationName&gt;/app/admin.jsf 访问此 jsf,那么您只需将 URL 模式更正为您真正使用的 url。

【讨论】:

  • 我就是不明白了。我试图配置spring,它允许每个人访问所有资源,也没有工作
猜你喜欢
  • 1970-01-01
  • 2014-07-04
  • 2017-01-18
  • 2012-02-03
  • 2012-01-02
  • 2017-06-08
  • 2018-06-26
  • 2015-08-27
  • 2013-04-28
相关资源
最近更新 更多