我的應用程序使用CAS 3.4.11,Spring 3.1和Hibernate 4. 我的login-webflow.xml使用了spring-webflow-2.0.xsd,登錄流程如下,Spring webflow + CAS:AuthenticationViaFormAction類不叫
<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>
豆 「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類的綁定/提交方法。但是總是調用InitialFlowSetupAction並且窗體重新顯示而沒有任何異常。至少我可以跟蹤是否有例外。
它可以是與表單的用戶名和密碼字段綁定的問題,以將其屬性設置爲UsernamePasswordCredentials?
基本上我想知道爲什麼InitialFlowSetupAction被調用onclick的「登錄」按鈕?