Vue登录验证码

Vue登录验证码

最近在开发PC端Vue项目,配合element-ui使用,这里分享下在登录页面登录验证码逻辑,言归正传。

1.效果图如 :

vue登录图

2.逻辑分析:

点击登录,首先判断验当前input框和生成的证码是否正确,如果正确发送请求,如果错误,提醒用户不在继续执行。

3.代码如下:

核心代码

createCode() {
		let code = "";
		const codeLength = 4; //验证码的长度  
		const random = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
			'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'); //随机数  
		for(let i = 0; i < codeLength; i++) { //循环操作  
			let index = Math.floor(Math.random() * 36); //取得随机数的索引(0~35)  
			code += random[index]; //根据索引取得随机数加到code上  
		}
		this.checkCode = code; //把code值赋给验证码  
	}

html 代码

<template>
  <div class="login">
    <el-form ref="form":model="form":rules="rules" class="form">
      <el-form-item prop="username">
        <el-input
          class="log-input"
          v-model="form.username"
          placeholder="用户名"
          prefix-icon="icon-login_user">
        </el-input>
      </el-form-item>
      <el-form-item prop="password">
        <el-input
          class="log-input"
          v-model="form.password"
          placeholder="密码"
          type="password"
          prefix-icon="icon-login_pwd"
        >
        </el-input>
      </el-form-item>
      <el-form-item
        prop="seccode"
        class="inputbar"
      >
        <el-input
          class="log-input"
          v-model="form.seccode"
          placeholder="验证码"
          prefix-icon="icon-login_auth"
          @keydown.enter.native="login('form')"
        >
        </el-input>
        <span class="checkCode" @click="createCode">{{ checkCode}}</span>
      </el-form-item>
      <el-form-item>
        <el-button
          type="primary"
          class="btn"
          @click="login('form')"
        >登录</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

js 代码

export default {
  data() {
    return {
      form: {
        username: "",
        password: "",
        seccode:""
      },
      checkCode:'',
      rules: {
        username: [{ required: true, message: "请输入用户名", trigger: "blur" }],
        password: [{ required: true, message: "请输入密码", trigger: "blur" }]
        seccode: [{ required: true, message: "请输验证码", trigger: "blur" }]
      },  
    };
  },
 mounted () {
    this.createCode();
  },
  methods: {
   createCode() {
		let code = "";
		const codeLength = 4; //验证码的长度  
		const random = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
			'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'); //随机数  
		for(let i = 0; i < codeLength; i++) { //循环操作  
			let index = Math.floor(Math.random() * 36); //取得随机数的索引(0~35)  
			code += random[index]; //根据索引取得随机数加到code上  
		}
		this.checkCode = code; //把code值赋给验证码  
	},
	login() {
      if(this.form.seccode != this.checkCode) {
         this.$message({
              message: "验证码错误,注意大写字母",
              type: "warning"
        });
        this.createCode();
        return false;
      };
      var fd = new FormData();
      fd.append("username", this.form.username);
      fd.append("password", this.form.password);
      loginPost(fd).then(res => {
          console.log(res);
          if (res.code == 200) {
            localStorage.setItem("myToken", res.obj.token);
            localStorage.setItem("username", res.obj.userName);
            this.$message({
              message: "登录成功",
              type: "success"
            });
            this.$router.push("/");
            // this.setUserName(res.obj.userName);
          } else {
            this.$message({
              message: res.content,
              type: "warning"
            });
          }
        })
        .catch(res => {
          console.log(res);
        });
     }

希望能帮到你!

  • 13
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
您可以使用以下步骤来实现 Spring Boot 和 Vue.js 登录验证码: 1. 在 Spring Boot 中实现验证码的生成和验证 您可以使用第三方库来生成验证码,例如 Kaptcha 或 Google 的 reCAPTCHA。使用 Kaptcha 的示例代码如下: ```java // 生成验证码 @RequestMapping("/captcha.jpg") public void captcha(HttpServletResponse response, HttpSession session) throws IOException { response.setHeader("Cache-Control", "no-store, no-cache"); response.setContentType("image/jpeg"); // 生成验证码 String text = kaptchaProducer.createText(); session.setAttribute("captcha", text); // 将验证码写入响应 BufferedImage image = kaptchaProducer.createImage(text); ServletOutputStream out = response.getOutputStream(); ImageIO.write(image, "jpg", out); out.flush(); out.close(); } // 验证码验证 @PostMapping("/login") public String login(String username, String password, String captcha, HttpSession session) { String sessionCaptcha = (String) session.getAttribute("captcha"); if (!captcha.equalsIgnoreCase(sessionCaptcha)) { return "验证码错误"; } // 其他登录逻辑 // ... } ``` 2. 在 Vue.js 中实现验证码的展示和刷新 您可以使用第三方库来实现验证码的展示和刷新,例如 vue-verify-code。使用 vue-verify-code 的示例代码如下: ```vue <template> <div> <input v-model="captcha" placeholder="请输入验证码"> <verify-code :url="captchaUrl" @success="onCaptchaSuccess"></verify-code> </div> </template> <script> import VerifyCode from 'vue-verify-code'; export default { components: { VerifyCode, }, data() { return { captcha: '', captchaUrl: '/captcha.jpg', }; }, methods: { onCaptchaSuccess() { // 验证码刷新成功 this.captchaUrl = '/captcha.jpg?' + Date.now(); }, }, }; </script> ``` 在上面的示例代码中,我们使用了 vue-verify-code 组件来展示验证码。该组件会在页面加载时自动请求 `/captcha.jpg` 地址来获取验证码图片。在用户输入验证码后,我们可以通过监听 `@success` 事件来刷新验证码,以便用户重新输入。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值