当前位置:首页 > uni-app

uniapp验证码

2026-02-05 17:26:13uni-app

uniapp验证码实现方法

使用第三方短信服务商API

在uniapp中调用短信服务商API发送验证码,需要后端配合完成。常见服务商包括阿里云短信、腾讯云短信、云片等。

前端调用示例:

uni.request({
  url: 'https://your-api-domain.com/send-sms',
  method: 'POST',
  data: {
    phone: '13800138000',
    type: 'login'
  },
  success: (res) => {
    console.log('验证码发送成功', res.data);
  }
});

前端倒计时功能实现

发送验证码后实现60秒倒计时:

data() {
  return {
    countdown: 0,
    codeText: '获取验证码'
  }
},
methods: {
  getCode() {
    if (this.countdown > 0) return;

    this.countdown = 60;
    const timer = setInterval(() => {
      this.countdown--;
      this.codeText = `${this.countdown}s后重新获取`;
      if (this.countdown <= 0) {
        clearInterval(timer);
        this.codeText = '获取验证码';
      }
    }, 1000);

    // 调用发送验证码接口
    this.sendSmsCode();
  }
}

图形验证码实现

使用canvas绘制图形验证码:

methods: {
  createCode() {
    const canvas = uni.createCanvasContext('verifyCanvas');
    const chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
    let code = '';

    // 绘制背景
    canvas.setFillStyle('#f0f0f0');
    canvas.fillRect(0, 0, 120, 40);

    // 绘制随机字符
    for (let i = 0; i < 4; i++) {
      const char = chars[Math.floor(Math.random() * chars.length)];
      code += char;
      canvas.setFontSize(20 + Math.random() * 10);
      canvas.setFillStyle(`rgb(${Math.random() * 100},${Math.random() * 100},${Math.random() * 100})`);
      canvas.fillText(char, 10 + i * 25, 25 + Math.random() * 10);
    }

    // 绘制干扰线
    for (let i = 0; i < 5; i++) {
      canvas.moveTo(Math.random() * 120, Math.random() * 40);
      canvas.lineTo(Math.random() * 120, Math.random() * 40);
      canvas.stroke();
    }

    canvas.draw();
    this.verificationCode = code.toLowerCase();
  }
}

验证码输入框组件

在template中使用验证码输入框:

<view class="code-input">
  <input type="number" v-model="smsCode" placeholder="请输入验证码" />
  <button @click="getCode" :disabled="countdown > 0">{{codeText}}</button>
</view>
<canvas canvas-id="verifyCanvas" @click="createCode" style="width:120px;height:40px;"></canvas>

安全注意事项

验证码功能需要考虑安全性问题:限制同一IP发送频率、设置每日发送上限、验证码有效期控制在5-10分钟、后端校验验证码时区分大小写。

后端验证示例

前端提交验证码到后端验证:

uniapp验证码

verifyCode() {
  uni.request({
    url: 'https://your-api-domain.com/verify-code',
    method: 'POST',
    data: {
      phone: '13800138000',
      code: this.smsCode
    },
    success: (res) => {
      if (res.data.success) {
        uni.showToast({ title: '验证成功' });
      } else {
        uni.showToast({ title: '验证码错误', icon: 'none' });
      }
    }
  });
}

标签: 验证码uniapp
分享给朋友:

相关文章

uniapp实现标题栏渐变

uniapp实现标题栏渐变

实现标题栏渐变的方法 在UniApp中实现标题栏渐变效果,可以通过修改页面的导航栏样式或使用自定义导航栏来实现。以下是几种常见的方法: 方法一:使用原生导航栏渐变 通过修改pages.json中的…

uniapp显示不全

uniapp显示不全

uniapp显示不全的常见原因及解决方法 页面布局问题 检查页面布局是否超出屏幕范围,确保根元素或外层容器设置正确的宽度和高度。使用flex布局或百分比单位适应不同屏幕尺寸。 滚动区域未设置 在需要…

uniapp 滑动组件

uniapp 滑动组件

uniapp 滑动组件实现方法 使用swiper组件 uniapp内置的swiper组件可以实现滑动效果,适用于轮播图或页面切换场景。 示例代码: <swiper :indicator-d…

php实现手机验证码

php实现手机验证码

PHP实现手机验证码功能 手机验证码是常见的用户验证方式,通过短信或语音发送验证码到用户手机。以下是在PHP中实现手机验证码功能的步骤: 生成随机验证码 使用PHP的rand()或mt_rand()…

php验证码实现原理

php验证码实现原理

PHP验证码实现原理 验证码(CAPTCHA)用于区分人类用户和自动化程序,防止恶意攻击。PHP实现验证码通常涉及生成随机字符串、创建图像、干扰元素添加和会话存储。 生成随机字符串 使用PHP的随机…

js登录验证码实现

js登录验证码实现

验证码生成与显示 使用HTML5 Canvas生成图形验证码,通过随机生成字符和干扰元素增强安全性。以下为基本实现代码: function generateCaptcha() { const c…