可以将Spring安全性用于JSF导航吗?

时间:2013-07-24 21:54:01

标签: jsf spring-security

我的问题与现有的SO帖子非常相似:
JSF - Spring Security Integration issue

Ravi关于禁用每次请求一次并指定FORWARD以“让它工作”的回应在网上的其他地方回应,即:
http://www.coderanch.com/t/61490/oa/Spring-security-intercept-url
很久以前:
http://forum.springsource.org/showthread.php?11025-lt-jsp-forward-gt-bypasses-Acegi

然而,我只是无法让它发挥作用。我已经完成了Ravi的回复建议的两个项目:

1)在spring的配置中每次请求一次:

<http auto-config="true" use-expressions="true" once-per-request="false">
   <intercept-url pattern="/partners/**" access="ROLE_PARTNER" />
.
.
.
</http>

2)包括FORWARD:

<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>REQUEST</dispatcher>
  <dispatcher>FORWARD</dispatcher>
</filter-mapping>

在我的情况下,我有一个命令链接到我的应用程序的合作伙伴部分工作(但不应该)。 是真的,在第一个之后的每个链接和发布的任何搜索都不起作用。但初始导航到/ parterns / **确实有效,我认为不应该这样做。

<p:menuitem>
  <h:commandLink ajax="false" action="/partners/search/partnerSearch"
                 styleClass="ui-menuitem-link
                 ui-corner-all">
                 <h:outputText value="Partners"/>
  </h:commandLink>
</p:menuitem>

我假设这意味着JSF实际上并没有使用请求调度程序来“转发”到导航结果(因此,Spring永远不会有机会重新评估安全性)。我已经尝试过放置断点并寻找自己,但这有点超出了我的理解,我所看到的。

我知道我可以使用重定向(但就像我链接的第一个SO帖子一样,不想这样做)。我也知道我可以在菜单项周围添加<sec:ifAnyGranted roles="ROLE_PARTNER">以防止首先出现点击。

我实际上只是好奇为什么这根本不起作用,当一些消息来源似乎表明应该这样做。

我对它不起作用的体验至少与其他一个地方相呼应: http://forum.springsource.org/showthread.php?82900-FilterSecurityInterceptor-not-being-called-for-a-JSF-forward

我的东西是:

<spring.version>3.1.3.RELEASE</spring.version>
<jsf.version>2.1.23</jsf.version> (mojarra)
<primeFaces.version>3.5.9</primeFaces.version>

0 个答案:

没有答案