1

私のアプリケーションは、CAS 3.4.11、Spring 3.1、および Hibernate 4 を使用します。私の login-webflow.xml は spring-webflow-2.0.xsd を使用し、ログイン フローを以下に示します。

<var name="credentials" class="org.jasig.cas.authentication.principal.UsernamePasswordCredentials" />

   <on-start>
     <evaluate expression="initialFlowSetupAction" />
   </on-start>

   <view-state id="viewLoginForm" view="casLoginView" model="credentials">
     <binder>
       <binding property="username" />
       <binding property="password" />
     </binder>
     <on-entry>
       <set name="viewScope.commandName" value="'credentials'" />
     </on-entry>
     <transition on="submit" bind="true" validate="true" to="realSubmit">
        <evaluate expression="authenticationViaFormAction.doBind(flowRequestContext, flowScope.credentials)" />
     </transition>
   </view-state>

Bean「initialFlowSetupAction」および「authenticationViaFormAction」は、cas-servlet.xml で次のように定義されています。

<bean id="initialFlowSetupAction" class="org.jasig.cas.web.flow.InitialFlowSetupAction"
        p:argumentExtractors-ref="argumentExtractors"
        p:warnCookieGenerator-ref="warnCookieGenerator"
        p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator"/>

  <bean id="authenticationViaFormAction" class="org.jasig.cas.web.flow.AuthenticationViaFormAction"
        p:centralAuthenticationService-ref="centralAuthenticationService"
        p:warnCookieGenerator-ref="warnCookieGenerator"/>

ここでの問題は、ログイン ページの起動中に InitialFlowSetupAction が呼び出されることです。[サインイン] ボタンをクリックすると、AuthenticationViaFormAction クラスの bind/submit メソッドが呼び出されます。ただし、常に InitialFlowSetupAction が呼び出され、例外なくフォームが再表示されます。少なくとも、例外があるかどうかを追跡できます。

プロパティを UsernamePasswordCredentials に設定するために、フォームのユーザー名とパスワードのフィールドにバインドの問題がある可能性はありますか?

基本的に、「サインイン」ボタンのクリック時に InitialFlowSetupAction が呼び出される理由を知りたいですか?

4

2 に答える 2

1

おそらく、フォームが「_flowExecutionKey」フィールドの値を保持していないためです。フローの実行を再開できるようにするには、次の入力要素を含める必要があります。

<form>
    ...
    <input type="hidden" name="_eventId" value="submit" />
    <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}" />
</form>

http://static.springsource.org/spring-webflow/docs/2.0-m1/reference/flow-executor.html

CAS 3.5.2 では、何らかの理由で「_flowExecutionKey」の代わりに「実行」フィールドが使用されます。

于 2013-03-21T06:21:08.117 に答える