前面三篇文章里面提到的由于对源码做了改动,这对开源程序是一种损害。故在前面的基础之上,将原先的代码重构,完全解耦,另外又重新阅读了login-webflow.xml 的逻辑,只在配置文件中引入自己写的类,实现SSO单点登录的功能。
改动之处主要在:
<var name="credentials" class="org.jasig.cas.authentication.principal.UsernamePasswordCredentials" />
<on-start>
<evaluate expression="initialFlowSetupAction" />
</on-start>
<decision-state id="ticketGrantingTicketExistsCheck">
<if test="flowScope.ticketGrantingTicketId neq null" then="hasServiceCheck" else="gatewayRequestCheck" />
</decision-state>
<decision-state id="gatewayRequestCheck">
<if test="externalContext.requestParameterMap['gateway'] neq '' && externalContext.requestParameterMap['gateway'] neq null && flowScope.service neq null" then="gatewayServicesManagementCheck" else="generateLoginTicket" />
</decision-state>
<decision-state id="hasServiceCheck">
<on-entry>
<evaluate expression="serviceRegisterCheck.doChangeStatus(flowRequestContext)" />
</on-entry>
<if test="flowScope.service != null" then="renewRequestCheck" else="viewGenericLoginSuccess" />
</decision-state>
<decision-state id="renewRequestCheck">
<if test="externalContext.requestParameterMap['renew'] neq '' && externalContext.requestParameterMap['renew&#