Shiro在web应用中实现验证码功能

目录结构:

  1. 概述
  2. 扩展shiro认证
  3. 验证码工具
  4. 验证码servlet
  5. 配置文件修改
  6. 修改登录页面
  7. 测试验证

[一]、概述

本文简单讲述在web应用整合shiro后,如何实现登录验证码认证的功能。

[二]、扩展shiro的认证

创建验证码异常类:CaptchaException.java

扩展默认的用户认证的bean为:UsernamePasswordCaptchaToken.java

扩展原始默认的过滤为:FormAuthenticationCaptchaFilter.java

修改shiro认证逻辑:ShiroDbRealm.java

[三]、验证码工具类

CaptchaUtil.java

[四]、创建验证码的servlet

CaptchaServlet.java

[五]、修改配置文件

web.xml 中增加配置:

修改 applicationContext-shiro.xml 中的配置如下:

[六]、修改登录页面

login.jsp

[七]、验证测试

启动项目后会看到如下页面:

本文介绍到此结束@Michael Sun.

原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]

本文链接地址: http://www.micmiu.com/opensource/security/shiro-web-captcha/

发表评论?

13 条评论。

  1. 验证码的判断应该在过滤器而不是 Realm 之中,更合理些

  2. servlet/captchaCode 这个路径怎么在项目中没有啊

  3. 怎么感觉不对呀,我运行一直报无法转换org.apache.shiro.authc.UsernamePasswordToken cannot be cast to com.dounine.shiro.UsernamePasswordCaptchaToken

  4. 😛 整的太复杂了,重写认证类,login的时候,把验证码带过去。加一个验证码类!

  5. 有帮助!谢谢! 🙂

  6. 能发一份demo么,最近正在研究这个,邮箱511098425@qq.com

  7. 楼主你能发一份源码吗?这两天正在研究这个东西。

  8. UsernamePasswordCaptchaToken token = (UsernamePasswordCaptchaToken) authcToken;
    为何我在这个地方就报UnknownAccountException异常了呢?

回复给 运动 ¬
取消回复


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">