若依源码学习1:验证码及各种shiro过滤器

本文介绍Kaptcha工具生成验证码的方法,并演示如何在Java Web应用中利用Shiro框架进行验证码验证。涵盖验证码生成配置、自定义过滤器以及Shiro拦截器的使用。
首图

1、验证码的生成及验证

1.1、生成

Kaptcha 是一个可高度配置的实用验证码生成工具

支持两种类型的验证码:字符类型和算术类型

/**
 * 图片验证码(支持算术形式)
 * 
 * @author ruoyi
 */
@Controller
@RequestMapping("/captcha")
public class SysCaptchaController extends BaseController
{
   
   
    @Resource(name = "captchaProducer")
    private Producer captchaProducer;

    @Resource(name = "captchaProducerMath")
    private Producer captchaProducerMath;

    /**
     * 验证码生成
     */
    @GetMapping(value = "/captchaImage")
    public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response)
    {
   
   
        ServletOutputStream out = null;
        try
        {
   
   
            HttpSession session = request.getSession();
            response.setDateHeader("Expires", 0);
            response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
            response.addHeader("Cache-Control", "post-check=0, pre-check=0");
            response.setHeader("Pragma", "no-cache");
            response.setContentType("image/jpeg");

            // 获取前端传送过来的验证码类型
            String type = request.getParameter("type");
            String capStr = null;   // 算术表达式
            String code = null;     // 算术结果,放到session中传递给前端,登录的时候连同账号密码传递给后端
            BufferedImage bi = null;  // 生成的验证码图片
            if ("math".equals(type))
            {
   
   
                String capText = captchaProducerMath.createText();
                capStr = capText.substring(0, capText.lastIndexOf("@"));
                code = capText.substring(capText.lastIndexOf("@") + 1);
                bi = captchaProducerMath.createImage(capStr);
            }
            else if ("char".equals(type))
            {
   
   
                capStr = code =
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值