cas加入验证码以及强制密码到期修改流程
来源:互联网 发布:linux vim 强制保存 编辑:程序博客网 时间:2024/05/01 22:29
以下为手动改配置文件的配置。
配置文件:
一:cas-servlet.xml,路径:cas/WEB-INF。这个是cas的MVC的配置文件,找到handlerMappingC这个bean,在其<props></props>标签中加入两行配置,分别为:
<prop key="/verify.htm">verifyController</prop><!--生成验证码控制器 --><prop key="/change.htm">changeController</prop><!--返回修改密码的页面 -->
之后在handlerMappingC整体配置下面加入两个bean的配置,分别为:
<bean id="changeController" class="cn.com.apexsoft.code.controller.ChangePwdController" /><bean id="verifyController" class="cn.com.apexsoft.code.controller.VerifyController" />
配置好之后如下图所示:
还是在此文件中,找到id为authenticationViaFormAction的bean注释掉,,在其下加入下图配置,这个bean顾名思义是验证表单提交的用户名密码验证码(cas也提供了记住密码功能,下一篇介绍),现在我继承了原有的类,即被我注释掉的,加入我的自定义验证类,在这个类里final Credentials credentials的入参会被自动绑定,可以通过
UsernamePasswordVCodeCredentials upv = (UsernamePasswordVCodeCredentials) credentials;
UsernamePasswordVCodeCredentials也是我继承了原有的用户名密码实体类,新增了验证码(或者记住密码字段)之后可以在这个方法里通过upv.getUsername(),upv.getPassword(),upv.getVcode(),取到表单提交上来的用户名密码验证码进行验证,并且也可以通过RequestContext的入参来获得其他http提交的参数
<bean id="authenticationViaFormAction" class="cn.com.apexsoft.code.authaction.MyAuthenticationViaFormAction"p:centralAuthenticationService-ref="centralAuthenticationService"p:warnCookieGenerator-ref="warnCookieGenerator"/>
的配置,配置完成之后见下图:
二:web.xml,路径:cas/WEB-INF应用配置文件找到
<servlet-mapping>
<servlet-name>cas</servlet-name>
<url-pattern>/403.html</url-pattern>
</servlet-mapping>
在其下追加:
<servlet-mapping> <servlet-name>cas</servlet-name> <url-pattern>/verify.htm</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>cas</servlet-name> <url-pattern>/change.htm</url-pattern> </servlet-mapping>
配置完成效果如下图:
三:login-webflow.xml,路径:cas/WEB-INF,cas的spring-webflow流程文件
在文件开头,将
<var name="credentials" class="org.jasig.cas.authentication.principal.UsernamePasswordCredentials" />的配置注释掉,其下加上
<var name="credentials" class="cn.com.apexsoft.code.entity.UsernamePasswordVCodeCredentials" />的配置,配置完成后如下图:
之后还是在此文件中找到
<view-state id="viewLoginForm" view="casLoginView" model="credentials"> <binder> <binding property="username" /> <binding property="password" /> <binding property="vcode" /> </binder> <on-entry> <set name="viewScope.commandName" value="'credentials'" /> </on-entry> <transition on="submit" bind="true" validate="true" to="validatorCode"> <evaluate expression="authenticationViaFormAction.doBind(flowRequestContext, flowScope.credentials)" /> </transition></view-state>
将此配置注释掉,在其下追加:
<view-state id="viewLoginForm" view="casLoginView" model="credentials"> <binder> <binding property="username" /> <binding property="password" /> <binding property="vcode" /> </binder> <on-entry> <set name="viewScope.commandName" value="'credentials'" /> </on-entry> <transition on="submit" bind="true" validate="true" to="validatorCode"> <evaluate expression="authenticationViaFormAction.doBind(flowRequestContext, flowScope.credentials)" /> </transition></view-state> <action-state id="validatorCode"> <evaluate expression="authenticationViaFormAction.validatorCode(flowRequestContext, flowScope.credentials, messageContext)" /> <transition on="error" to="generateLoginTicket" /> <!-- generateLoginTicket--> <transition on="success" to="validatorPwd" /> <!-- 原来是realSubmit --></action-state> <action-state id="validatorPwd"> <evaluate expression="authenticationViaFormAction.validatorPwd(flowRequestContext, flowScope.credentials, messageContext)" /> <transition on="error" to="realSubmit" /> <transition on="success" to="changePwdView" /> </action-state><end-state id="changePwdView" view="changePwdView" />
配置完成后如下图:
四:messages_zh_CN.properties,路径:%CATALINA_HOME/Liferay/CASServer/WEB-INF/classes国际化配置文件:
在其中加入required.vcode=\u9A8C\u8BC1\u7801\u6709\u8BEF的配置即可
五:default_views.properties,路径:cas/WEB-INF/classes
CAS所有视图的配置文件:
加入
changePwdView.(class)=org.springframework.web.servlet.view.JstlView
changePwdView.url=/WEB-INF/changepwd.jsp
即可。
六:CAS登录页面jsp:路径:cas/WEB-INF/view/jsp/default/ui下的casLoginView.jsp。可以根据自己需要修改相应的国际化属性文件
有需要整个项目源码的可以PO我!
cas作为一个单点登录的解决方案,用起来也简单顺手,并且可以集成一些流行的cache如ehcache,memcached,jbosstreecache等来缓存ticket,甚至如果做什么系统都可以拿来一用!最近有一个想法就是把cas和spring security集成起来加入权限管理这一块!
由于cas是spring mvc+spring webflow,所以可以在基础上加入一些流程,当然不破坏cas原有的流程逻辑!最近在疯狂的看各种书,主要是关于NIO和多线程,所以懒得写博客,- -,现阶段还是学习为先,多看大神的博客吸收知识!
- cas加入验证码以及强制密码到期修改流程
- 代码片段, 修改密码验证流程
- cas客户端验证流程
- (六)SSO之CAS框架扩展 修改CAS源码实现与ESS动态密码验证对接
- applet修改字体,剪贴板以及密码验证
- MySQL强制修改密码
- 强制修改mysql密码
- 怎样强制修改笔记本密码
- mysql密码忘记,强制修改
- mysql强制修改root密码
- 修改cas-server(四),增加验证码功能。
- CAS认证流程3:验证用户信息
- CAS 服务端登录验证流程(一)
- CAS 服务端登录验证流程(二)
- CAS 服务端登录验证流程(三)
- CAS 服务端登录验证流程(四)
- javascript 密码修改验证
- ajax验证修改密码
- VTK概述
- 求平均成绩 杭电2023
- Android Scroll 分析
- 平时遇到的编程问题的记录(1)
- 提高篇——冒泡排序(用指针变量作为函数参数,接收从数组传来的数组元素首地址)
- cas加入验证码以及强制密码到期修改流程
- source inisight无法跳转
- BIEE 11g catalog自动复制
- 非SSL协议 CAS服务端部署及客户端配置
- Oracle基本语法之DML(二)
- 散列函数与层级结构数据
- leetcode 494
- 服务端改造(登录页及登录方式的自定义)
- hdu 1003 Max Sum (dp)