验证码实现
关于kaptcha
kaptcha 是一个很有用的验证码生成工具。有了它,你能够生成各种样式的验证码,由于它是可配置的。使用kaptcha能够方便的配置:
- 验证码的字体
- 验证码字体的大小
- 验证码字体的字体颜色
- 验证码内容的范围(数字,字母,中文汉字!)
- 验证码图片的大小。边框,边框粗细,边框颜色
- 验证码的干扰线(能够自己继承com.google.code.kaptcha.NoiseProducer写一个自己定义的干扰线)
- 验证码的样式(鱼眼样式、3D、普通模糊……当然也能够继承com.google.code.kaptcha.GimpyEngine自己定义样式)
maven依赖
1 | <dependency> |
注入验证码Servlet
KaptchaConfig.java
1 |
|
在这里我们注入了一个链接为“/captcha/kaptcha.jpg”的servlet。点击运行项目打开链接如果看到验证码图片,则说明配置成功了。
验证码拦截器
CaptchaValidateFilter.java
1 | ublic class CaptchaValidateFilter extends AccessControlFilter { |
验证码拦截器继承了AccessControlFilter,该类提供了访问控制的基础功能,比如是否允许访问/当访问拒绝时如何处理等。主要有两个方法:
- isAccessAllowed:表示是否允许访问;mappedValue就是[urls]配置中拦截器参数部分,如果允许访问返回true,否则false;
- onAccessDenied:表示当访问拒绝时是否已经处理了;如果返回true表示需要继续处理;如果返回false表示该拦截器实例已经处理了,将直接返回即可
修改ShiroConfig.java
1 | public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) { |
在表单验证拦截器前加入验证码拦截器
记住登录实现
ShiroConfig的配置
在ShiroConfig.java中添加如下方法:
1 | public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) { |
login页面
1 |
|