首页 > 其他分享 >vue 设置密码添加弱、中、强的校验

vue 设置密码添加弱、中、强的校验

时间:2024-01-29 16:22:05浏览次数:20  
标签:vue color 校验 else 密码 添加 user true strength

需求:

1)需要输入原密码,如果输入的原密码不对,则给出相应提示;
2)新密码需要确认,输入两次,且相同,否则系统给出提示;
3)新密码长度大于等于6个字符小手18 个字符;
4)新密码给出密码强度判断,判断规则为:宇母数字符号只有一种则为弱,字
母数字符号任意包含两种则为中,字母数字符号包含三种则为强。

HTML:

<template>
  <el-form ref="form" :model="user" :rules="rules" label-width="80px">
    <el-form-item label="旧密码" prop="oldPassword">
      <el-input
        v-model="user.oldPassword"
        placeholder="请输入旧密码"
        type="password"
        show-password
      />
    </el-form-item>
    <el-form-item label="新密码" prop="newPassword">
      <el-input
        v-model="user.newPassword"
        placeholder="请输入新密码"
        type="password"
        show-password
        @input="checkPasswordStrength"
      />
      <span
        >密码强度:<span :class="tipsColor">{{ strength }}</span></span
      >
    </el-form-item>
    <el-form-item label="确认密码" prop="confirmPassword">
      <el-input
        v-model="user.confirmPassword"
        placeholder="请确认新密码"
        type="password"
        show-password
      />
    </el-form-item>
    <el-form-item>
      <el-button type="primary" size="mini" @click="submit">保存</el-button>
      <el-button type="danger" size="mini" @click="close">关闭</el-button>
    </el-form-item>
  </el-form>
</template>

<script>
import { updateUserPwd } from "@/api/system/user";

export default {
  data() {
    const equalToPassword = (rule, value, callback) => {
      if (this.user.newPassword !== value) {
        callback(new Error("两次输入的密码不一致"));
      } else {
        callback();
      }
    };
    return {
      strength: "",
      user: {
        oldPassword: undefined,
        newPassword: undefined,
        confirmPassword: undefined,
      },
      // 表单校验
      rules: {
        oldPassword: [
          { required: true, message: "旧密码不能为空", trigger: "blur" },
        ],
        newPassword: [
          { required: true, message: "新密码不能为空", trigger: "blur" },
          {
            min: 6,
            max: 18,
            message: "长度在 6 到 18 个字符",
            trigger: "blur",
          },
        ],
        confirmPassword: [
          { required: true, message: "确认密码不能为空", trigger: "blur" },
          { required: true, validator: equalToPassword, trigger: "blur" },
        ],
      },
    };
  },
  computed: {
    // 计算两个周期值
    tipsColor: function () {
      let str = this.strength;
      if(str == "弱"){
        return 'color-ruo'
      }else if(str == "中"){
        return 'color-zhong'
      }else if(str == "强"){
        return 'color-qiang'
      }else{
        return ''
      }
    },
  },
  methods: {
    submit() {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          updateUserPwd(this.user.oldPassword, this.user.newPassword).then(
            (response) => {
              this.$modal.msgSuccess("修改成功");
            }
          );
        }
      });
    },
    close() {
      this.$tab.closePage();
    },
    // 对新密码进行校验
    checkPasswordStrength() {
      let hasLetter = false;
      let hasNumber = false;
      let hasSymbol = false;

      for (let char of this.user.newPassword) {
        if (/[a-zA-Z]/.test(char)) {
          hasLetter = true;
        } else if (/\d/.test(char)) {
          hasNumber = true;
        } else {
          hasSymbol = true;
        }
      }

      if (hasLetter + hasNumber + hasSymbol === 1) {
        this.strength = "弱";
      } else if (hasLetter + hasNumber + hasSymbol === 2) {
        this.strength = "中";
      } else if (hasLetter + hasNumber + hasSymbol >= 3) {
        this.strength = "强";
      } else {
        this.strength = "";
      }
    },
  },
};
</script>
<style scoped>
.color-ruo{
  color: #f56c6c;
}
.color-zhong{
  color: #e6a23c;
}
.color-qiang{
  color: #67c23a;
}
</style>

效果图:

 

标签:vue,color,校验,else,密码,添加,user,true,strength
From: https://www.cnblogs.com/houBlogs/p/17994785

相关文章

  • 为什么button command 不需要lambda函数添加参数 但是 bind 需要
    combo=tk.ttk.Combobox(frame_combo,values=self.lis,width=25,font=("MicrosoftYaHei",20))combo.pack(side='top',anchor="nw")combo.set("请选择功能")combo.option_add("*TCombobox*......
  • vue 环境配置(使用cross-env配置)
    vue环境配置(使用cross-env配置)通过定义不同的打包命令,更改项目环境变量。1、下载cross-even(可跨平台设置node环境变量)npminstallcross-env--save-dev2、package.json文件查询scripts,在其中加入如下代码:(其为不同环境的打包命令,可自定义)。"build:qa":"cr......
  • 新来的一个同事,把SpringBoot参数校验玩的那叫一个优雅
    介绍在开发现代应用程序时,数据验证是确保用户输入的正确性和应用程序数据完整性的关键方面。SpringBoot提供了强大的数据验证机制,使开发者能够轻松地执行验证操作。本文将深入介绍SpringBoot中的Validation,以及如何在应用程序中正确使用它。为什么使用数据验证?1.用户输......
  • 通过 Windows 安全中心添加排除项:
    在Windows中设置排除项,即将特定的文件、文件夹或进程从WindowsDefender的扫描中排除,可以通过Windows安全中心来完成。以下是详细步骤:通过Windows安全中心添加排除项:打开Windows设置:按下Windows键+I,打开设置。进入更新与安全:在设置菜单中,选择“更新与安全......
  • 【秀米教程8】设置背景渐变色,添加渐变色
    添加渐变色1、点击控件,直到出现属性栏2、点击【“+”号】-【渐变色】-【输入代码】-【加入调色板】3、此时调色板最下面就会出现新的渐变色代码看不懂?linear-gradient()函数用于创建一个表示两种或多种颜色线性渐变。渐变轴为45度,从蓝色渐变到红色linear-gradient(45deg,blue,re......
  • vue3使用自定义指令实现图片懒加载
    //自定义指令app.directive('lazy',{mounted(el,binding){//绑定的元素,绑定的值//IntersectionObserver可以用来自动监听元素是否进入了设备的可视区域之内,而不需要频繁的计算来做这个判断constobserve=newIntersectionObserver(([{isIntersec......
  • [word] Word怎么批量添加空格
    在Word文档中如何在每个文字中间加一个空格呢?还是一个个的文字敲打吗?教你一个小技巧,批量添加空格,超简单。1、选中整个文档,按下快捷键Ctrl+H打开查找替换对话框,在查找内容中输入【?】,在替换中输入【^&空格】,再点击更多勾选“使用通配符”。......
  • [office] Excel单元格中怎么添加和删除批注
    1、在工作表中选择需要添加批注的单元格,在“审阅”选项卡的“批注”组中单击“新建批注”按钮,如图1所示。此时可创建一个批注,在批注框中输入批注内容,如图2所示。提示:鼠标右击需要添加批注的单元格,在弹出的关联菜单中选择“插入批注”命令可以为该单元格添加批注。另外......
  • Vue模板语法——数据绑定指令
    一、数据绑定指令v-text填充纯文本相比插值表达式更加简洁v-html填充HTML片段存在安全问题本网站内部数据可以使用,来自第三方的数据不可以用v-pre填充原始信息显示原始信息,跳过编译过程(分析编译过程)二、v-text填充纯文本v-text用法在需填充的标签中添加......
  • Vue模板语法——v-once 数据响应式
    一、数据响应式如何理解响应式html5中的响应式:屏幕尺寸的变化导致样式的变化数据的响应式:数据的变化导致页面内容的变化什么是数据绑定数据绑定:将数据填充到标签中v-once只编译一次显示内容之后不再具有响应式功能二、v-once指令v-once应用场景如果显示的......