【问题标题】:Unsecure a Spring flow using Spring Security使用 Spring Security 取消对 Spring 流的保护
【发布时间】:2017-06-14 19:48:34
【问题描述】:

我正在开发一个使用 Spring Webflow 和 Spring Security 的应用程序。我是新手,并且处于学习阶段。我的问题是关于如何取消特定的弹簧流量。我有以下 ma​​in-flow.xml,其内容是 -

<flow xmlns ...  >
<subflow-state id="demoSubflowId" subflow="demo/subflow">
    <transition to="search" />
</subflow-state>

... //There are other subflows configured here

subflow.xml 存在于另一个名为“demo”的目录中。

在 Spring security-config.xml 中,我有这个配置,我假设它可以保护所有 webflows -

<http access-decision-manager-ref="customAccessDecisionManager">
    <intercept-url pattern="/**" access="IS_AUTHENTICATED_FULLY" />
    <form-login always-use-default-target="true" default-target-url="/spring/main" login-page="/secureLogin"
        authentication-failure-url="/secureLogin" />
    <logout  success-handler-ref="logoutSuccessHandler" />
    <custom-filter position="LAST" ref="requestInspectionFilter" />
</http>

目前应用程序中的所有流程都需要身份验证。但是现在我得到了一项任务,即为不需要身份验证的任务创建一个新的子流。这就是我在上面使用 id=demoSubflowId 创建新子流程的原因,但是每次我尝试从下面的 xhtml 代码中点击此流程时,它都会将我重定向到登录页面。

<a href="#" onclick="document.myForm.submit();" class="btn">Xhtml Unsecured demo</a>

<form name="myForm" action="${pageContext.request.contextPath}/spring/main?moduleId=mySubflowId" method="post"> </form>

谁能帮我解决如何取消特定 Spring Web 流/子流的安全?我用谷歌搜索并找到了如何从 spring-security 中排除 URL。在我当前的应用程序中,我们也有不安全的 servlet URL(如下所示)并在 security-config.xml 中配置,但我不知道如何为 Spring webflow URL 执行此操作。

<http pattern="/secureLogin*" security="none" />
<http pattern="/resetPassword" security="none" />

我们将不胜感激任何有关取消 Spring Webflow 安全的帮助/建议。提前致谢。

【问题讨论】:

    标签: java spring spring-security spring-webflow spring-webflow-2


    【解决方案1】:

    假设您使用 /main 访问您的流程,这似乎是您的配置中的情况,您应该能够使用以下方法“取消保护它”:

    <http pattern="/main" security="none" />
    

    [编辑]

    这并不完美,但在您的主要流程中,您可以使用 &lt;secured&gt; 手动保护其他子流程:

    <secured attributes="ROLE_USER" />
    

    【讨论】:

    • 我通过将 moduleId 附加到主 url 来访问它,例如 /spring/main?moduleId=mySubflowId。此 URL 在上面的倒数第二个代码 sn-p 中提供。如果我按照您的方式进行操作,则有可能所有子流都不安全。我只想取消特定子流的安全,例如。问题中提到的 mySubflowId。
    猜你喜欢
    • 2022-12-11
    • 2014-07-29
    • 2016-09-01
    • 1970-01-01
    • 2012-11-20
    • 2016-01-12
    • 2014-02-21
    • 1970-01-01
    相关资源
    最近更新 更多