若依RuoYi-Vue代码学习一---登录实现(验证码校验、token生成,token过滤【验证】)

一、验证码生成功能

  • 成果:
    在这里插入图片描述

  • 可以看出这个验证码主要是:这个图片的展示

代码位置com.ruoyi.web.controller.common.CaptchaController

@RestController
public class CaptchaController
{
   
    @Resource(name = "captchaProducer")
    private Producer captchaProducer;//验证码制作者

    @Resource(name = "captchaProducerMath")
    private Producer captchaProducerMath;//制作 数学计算 的验证码

    @Autowired
    private RedisCache redisCache;//redis缓存
    
    // 验证码类型
    @Value("${ruoyi.captchaType}")
    private String captchaType;//验证码类型
    
    @Autowired
    private ISysConfigService configService;//就用于判断验证码开关
    /**
     * 生成验证码
     */
    @GetMapping("/captchaImage")
    public AjaxResult getCode(HttpServletResponse response) throws IOException
    {
   
        AjaxResult ajax = AjaxResult.success();//定义成功的返回结果
        boolean captchaOnOff = configService.selectCaptchaOnOff();//获取验证码开关
        ajax.put("captchaOnOff", captchaOnOff);
        if (!captchaOnOff)//开关:关着,直接返回
        {
   
            return ajax;
        }

        // 保存验证码信息
        String uuid = IdUtils.simpleUUID();//生成随机四位数
        String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;//验证密匙===验证码 redis key + uuid

        String capStr = null, code = null;
        BufferedImage image = null;//缓冲图像

        // 生成验证码
        if ("math".equals(captchaType))
        {
   
            String capText = captchaProducerMath.createText();//谷歌的验证码文本创建(展示问题@结果)9+8=?@17
            capStr = capText.substring(0, capText.lastIndexOf("@"));//问题
            code = capText.substring(capText.lastIndexOf("@") + 1);//结果
            image = captchaProducerMath.createImage(capStr);//根据问题创建图片
        
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值