cas server端的login-webflow详细流程
来源:互联网 发布:php员工管理系统源代码 编辑:程序博客网 时间:2024/06/05 04:15
login-webflow是当你在浏览器里面输入https://uia.comsys.net.cn/login?param_list
后,cas server端如何处理的.
它实际上是spring-webflow的应用
有关spring-webflow的详细介绍,
网上铺天盖地,我就不啰嗦了
cas server端的web.xml文件里面有
<servlet-name>cas</servlet-name>
<servlet-class>
org.jasig.cas.web.init.SafeDispatcherServlet
</servlet-class>
<init-param>
<param-name>publishContext</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
这个是login-webflow的入口servlet,映射的url-pattern之一就是
<servlet-name>cas</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
即login
spring webflow必须在flow-registry里面注册,
这个是在cas-servlet.xml里面注册的
<webflow:flow-location path="/WEB-INF/login-webflow.xml" id="login" />
</webflow:flow-registry>
这句话把login-webflow.xml进行了注册
同时呢
对应的view properties在propertyFileConfigurer.xml中指定了
p:location="/WEB-INF/cas.properties" />
打开cas.properties
cas.viewResolver.basename=default_views
对应了default.properties
default_views.properties
这两个properties里面放了对应的css js 和jsp的路径,大家一定要注意。
OK,基本的配置就是这些,
下面我们重点来关注下login-webflow.xml
里面是一个具体的spring webflow流程
涉及到的结点有on-start 流程开始
end-state流程结束 decision-state判断,类似于if
view-state对应jsp页面 action-state对应执行程序的某段
里面的<evaluate expression="initialFlowSetupAction" />这些定义在cas-servlet.xml中
view-state里面的view定义在default_views.properties中
下面简单介绍下里面的语句说明
这句话的意思是执行
org.jasig.cas.web.flow.InitialFlowSetupAction中的doExecute方法
其中的变量都由spring注入了
具体看对应的配置文件
然后下一个流程是
<if test="flowScope.ticketGrantingTicketId neq null" then="hasServiceCheck" else="gatewayRequestCheck" />
</decision-state>
进行判断
flowScope.ticketGrantingTicketId
这个在org.jasig.cas.web.flow.InitialFlowSetupAction中由
"ticketGrantingTicketId", this.ticketGrantingTicketCookieGenerator.retrieveCookieValue(request));
这句话放入了,然后在这儿进行检测neq null是不为null的意思
then else都很好理解
view state
<var name="credentials" class="org.jasig.cas.authentication.principal.UsernamePasswordCredentials" />
<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">
<set name="flowScope.credentials" value="credentials" />
<evaluate expression="authenticationViaFormAction.doBind(flowRequestContext, flowScope.credentials)" />
</transition>
</view-state>
对应的是casLoginView.jsp
在这里对一些页面变量和对应的java类进行了绑定
action state
<evaluate expression="authenticationViaFormAction.submit(flowRequestContext, flowScope.credentials, messageContext)" />
<transition on="warn" to="warn" />
<transition on="success" to="sendTicketGrantingTicket" />
<transition on="error" to="viewLoginForm" />
</action-state>
执行对应的方法,这儿执行org.jasig.cas.web.flow.AuthenticationViaFormAction中的
submit方法,并根据返回值到不同的分支
这块要弄清楚不容易,建议多看看相关资料,
里面倒腾还是很多的。
- cas server端的login-webflow详细流程
- cas server端的login-webflow详细流程
- sso-cas全攻略(java版)------cas server端的login-webflow详细流程
- casPortal,CAS如何采用webflow控制登录流程
- cas login-webflow.xml分析。关于TGT何时生成和存储。
- CAS WEBFLOW详解
- cas-server的配置
- cas server的使用
- CAS Server端配置
- cas server 端部署
- login (登录)的 PAM 验证机制流程
- login shell 的配置文件读取流程
- 4、Cas Server的配置文件
- Using CAS without the CAS login screen
- 给cas自定义login界面
- SSO单点登录 cas-server端的搭建
- CAS Server
- Cas Server 与Cas Client 的配置与部署
- JDK配置完成以后,“.jar”文件双击依旧不能运行的问题
- 深度分析 Java 的 ClassLoader 机制(源码级别)
- CAS 单点登陆配置
- stdafx.h的作用以及原理
- 关键业务系统的JVM启动参数推荐http://calvin1978.blogcn.com/articles/jvmoption-2.html
- cas server端的login-webflow详细流程
- 第14周 项目3 - 是否二叉排序树?
- java web中使用log4j路径的事
- python 日志记录
- android 动画效果 activity 和popwindows
- IOS 推送(本地推送、远程推送、三方推送[极光推送])
- matlab2014a下载、安装、破解步骤以及LibSVM 在matlab中的使用
- iReport默认参数和变量的含义解析【转】
- 深入理解JDBC的超时设置