现在已经可以利用CAS实现数据库的登录控制以及记住密码的功能,但是依然还会有一个实际的问题:为了防止有可能出现的暴力破解的情况,所以在进行登录之前一定要存在有一个验证码的检测操作。
但是现在的问题是CAS属于第三方项目,不属于自己的项目,所以如果想要实现这样的验证码操作,那么必须扩充已有的程序类才可以完成。
1. 用户名和密码检测类



2. 验证码检测的Action程序类
只依靠验证码服务器校验的程序类无法实现真正的验证码检测,所以还需要创建一个专门用于验证码检测的Action程序类。


3.异常类
- 建立数据为空时的异常处理类

- 定义一个验证码输入错误时的错误类:

4. 将程序打包导出
导出为一个“rand-code.jar”文件

5. 为项目之中追加验证码依赖包:kaptcha-0.0.9.jar、filters-2.0.235.jar
将之前的开发包以及验证码生成的开发包上传到Linux之中,并且将其保存在cas目录之中

mv /srv/ftp/*.jar /usr/local/tomcat/webapps/cas/WEB-INF/lib
6. 修改cas项目中的web.xml文件,追加验证码显示
<servlet>
<servlet-name>captchacode</servlet-name>
<servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
<init-param>
<description>边框粗细度。必须是一个大于0的值</description>
<param-name>kaptcha.border.thickness</param-name>
<param-value>1</param-value>
</init-param>
<init-param>
<description>图片的宽度</description>
<param-name>kaptcha.image.width</param-name>
<param-value>140</param-value>
</init-param>
<init-param>
<description>图片的高度</description>
<param-name>kaptcha.image.height</param-name>
<param-value>55</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>captchacode</servlet-name>
<url-pattern>/captchacode</url-pattern>
</servlet-mapping>
</servlet>
7 修改“cas/WEB-INF/cas-servlet.xml”配置文件,主要是修改验证操作所使用的程序类
- 之前自定义了一个程序类:cn.mldn.rand.action.AuthenticationViaFormWithRandAction
- 原始内容:

- 更新后的内容:

8. 修改“cas/WEB-INF/webflow/login/login_webflow.xml”页面配置文件
- 原始内容:

- 替换掉的新内容:

- 为项目中增加验证码的输入验证处理:

9. 增加国际化显示信息:cas/WEB-INF/classes/message_zh_CN.properties

然后转码:

10. 登录页面cas/WEB-INF/view/jsp/default/uicasLoginView.jsp添加验证码输入框

11. 测试

网友评论