博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cas加入验证码以及强制密码到期修改流程
阅读量:6159 次
发布时间:2019-06-21

本文共 2644 字,大约阅读时间需要 8 分钟。

hot3.png

以下为手动改配置文件的配置。

配置文件:

一:cas-servlet.xml,路径:cas/WEB-INF。这个是cas的MVC的配置文件,找到handlerMappingC这个bean,在其<props></props>标签中加入两行配置,分别为:

verifyController
changeController

之后在handlerMappingC整体配置下面加入两个bean的配置,分别为:

 配置好之后如下图所示: 

还是在此文件中,找到id为authenticationViaFormAction的bean注释掉,,在其下加入下图配置,这个bean顾名思义是验证表单提交的用户名密码验证码(cas也提供了记住密码功能,下一篇介绍),现在我继承了原有的类,即被我注释掉的,加入我的自定义验证类,在这个类里final Credentials credentials的入参会被自动绑定,可以通过

UsernamePasswordVCodeCredentials upv = (UsernamePasswordVCodeCredentials) credentials;

UsernamePasswordVCodeCredentials也是我继承了原有的用户名密码实体类,新增了验证码(或者记住密码字段)之后可以在这个方法里通过upv.getUsername(),upv.getPassword(),upv.getVcode(),取到表单提交上来的用户名密码验证码进行验证,并且也可以通过RequestContext的入参来获得其他http提交的参数

的配置,配置完成之后见下图:

 

二:web.xml,路径:cas/WEB-INF应用配置文件找到

<servlet-mapping>

                 <servlet-name>cas</servlet-name>

                 <url-pattern>/403.html</url-pattern>

</servlet-mapping>

在其下追加:

cas
/verify.htm
cas
/change.htm

配置完成效果如下图:

三: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" />的配置,配置完成后如下图:

之后还是在此文件中找到

将此配置注释掉,在其下追加:

配置完成后如下图:

四: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和多线程,所以懒得写博客,- -,现阶段还是学习为先,多看大神的博客吸收知识!

转载于:https://my.oschina.net/stillotherguy/blog/181718

你可能感兴趣的文章
委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。...
查看>>
apache 伪静态 .htaccess
查看>>
unity3d 截屏
查看>>
ASP.NET MVC学习之控制器篇
查看>>
MongoDB ServerStatus返回信息
查看>>
分析jQuery源码时记录的一点感悟
查看>>
android中的textview显示汉字不能自动换行的一个解决办法
查看>>
程序局部性原理感悟
查看>>
UIView 动画进阶
查看>>
ROS机器人程序设计(原书第2版)1.4.7 在BeagleBone Black中安装rosinstall
查看>>
Spring如何处理线程并发
查看>>
linux常用命令(用户篇)
查看>>
获取组件的方式(方法)
查看>>
win2008 server_R2 自动关机 解决
查看>>
我的友情链接
查看>>
在C#调用C++的DLL简析(二)—— 生成托管dll
查看>>
Linux macos 常用终端操作
查看>>
企业网络的管理思路
查看>>
Linux磁盘分区与挂载
查看>>
J2se学习笔记一
查看>>