以下为手动改配置文件的配置。
配置文件:
一: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和多线程,所以懒得写博客,- -,现阶段还是学习为先,多看大神的博客吸收知识!