开箱即用——vue校验密码强度,带强度指示条

需求:
一、密码长度:
5 分: 小于等于 4 个字符, 10 分: 5 到 7 字符 , 25 分: 大于等于 8 个字符
二、字母:
0 分: 没有字母, 10 分: 全都是小(大)写字母, 20 分: 大小写混合字母
三、数字:
0 分: 没有数字, 10 分: 1 个数字, 20 分: 大于等于 3 个数字
四、符号:
0 分: 没有符号, 10 分: 1 个符号, 25 分: 大于 1 个符号
五、奖励:
2 分: 字母和数字, 3 分: 字母、数字和符号, 5 分: 大小写字母、数字和符号
最后的评分标准:
= 90: 非常安全
= 80: 安全(Secure)
= 70: 非常强
= 60: 强(Strong)
= 50: 一般(Average)
= 25: 弱(Weak)
= 0: 非常弱

核心代码:按照需求判断字符串的强度

function checkPassword (str){
  // 第一步先判断各分类长度
  let num = 0;//数字
  let lowerCase = 0;//小写字母
  let upperCase = 0;//大写字母
  let special = 0;//特殊字符
  for (let i = 0; i < str. length; i++){
    let c = str.charCodeAt(i)
    if (c >= 48&& c <= 57){
      //数字
      num++;
    }else if (c >= 65 && c <= 90){
      //大写字母
      upperCase++;
    }else if (c = 97 && c <= 122){
      //小写字母
      lowerCase++;
    }else {
      special++;
    }
  }
  // 第二步 计算分数
  let wholeMark = 0
  let numMark = 0
  let caseMark = 0
  let specialMark = 0
  let reward = 0
  // 整长度分数
  if (str.length <= 4){
    wholeMark = 5
  }else if (str.length > 4 && str. length <=8){
    wholeMark = 10
  }else {
    wholeMark = 25
  }
  // 奖励分数
  if ((lowerCase || upperCase)&& num) {
    reward = 2
    if (special){
      reward = 3
      if (lowerCase && upperCase) {
        reward = 5
      }
    }
  }
  // 字母分数
  if (lowerCase || upperCase) {
    caseMark = 10
    if (lowerCase && upperCase){
      caseMark = 20
    }
  }
  // 数字分数
  if (num){
    numMark = 10
    if (num >= 3){
      numMark = 20
    }
  }
  // 符号分数
  if (special){
    specialMark = 10
    if (special > 1){
      specialMark = 25
    }
  }
  let totalMark = wholeMark + numMark + caseMark + specialMark + reward
  let strength = ''
  if (totalMark<25){ strength ='非常弱'
  }else if (totalMark >= 25 && totalMark < 50){strength ='弱'
  }else if (totalMark >= 50 && totalMark < 60){strength = '一般'
  }else if (totalMark >= 60 && totalMark < 70){strength ='强'
  }else if (totalMark >= 70 && totalMark < 80){strength = '非常强'
  }else if (totalMark >= 86 && totalMark < 90){strength = '安全'
  }else {strength ='非常安全'
  }
  return strength
}

执行测试:
在这里插入图片描述

借鉴博文:https://www.imooc.com/article/17470

  • 下面是在页面上显示强度条的内容

html部分


<input value="password" @change="onPasswordChange"></input>

<div>
<span :class="(password &&(isOne||isTwo||isThree||isFour||isFive||isSix||isSeven))?'colorRed' : 'colorInit'"></span>
<span :class="(isTwo||isThree||isFour||isFive||isSix||isSeven)? 'colorRed : 'colorInit'"></span>
<span :class="(isThree||isFour||isFive||isSix||isSeven)? 'colorOrange ' : 'colorInit'"></span>
<span :class="(isFour||isFive|lissix||isSeven)? 'colorOrange' : 'colorInit'"></span>
<span :class="(isFive||isSix||isSeven)? 'colorGreen': 'colorInit'"></span>
<span :class="(isSix|| isSeven)? 'colorGreen' : 'colorInit'"></span>
<span :class="isSeven? 'colorSafe' : 'colorInit'"></span>
<span v-show="password" class="left5"> {{psdstrength}} </span>
</div>

method部分

onPasswordChange(val){
this.isOne = false
this.isTwo = false
this.isThree = false
this.isFour = false
this.isFive = false
this.isSix = false
this.isSeven = false
const psdVal = val.target.value
const psdStrength = checkPassword(psdVal)
this.psdstrength = psdStrength
switch (psdStrength){
  case '非常弱':
    this.is0ne = true
    break;
  case '弱':
    this.isTwo = true
  break;
  case '一般':
    this.isThree = true
    break;
  case '强':
    this.isFour = true
    break;
  case '非常强':
    this.isFive = true
    break;
  case '安全':
    this.isSix = true
    break;
  case '非常安全':
    this.isSeven = true
    break;
  default:
    break;
  }
}

css
在这里插入图片描述
在这里插入图片描述
借鉴网址:https://blog.csdn.net/libin_1/article/details/51577472

效果图
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js 是一个用于构建交互式 Web 界面的渐进式 JavaScript 框架。如果你想要在 Vue.js 中实现密码强度验证,可以使用一个密码强度评估库来计算密码的强度,并使用 Vue.js 来更新界面。 一个流行的密码强度评估库是 zxcvbn,它可以计算密码的熵值,并根据熵值给出密码的强度评分。你可以使用 npm 安装 zxcvbn: ``` npm install zxcvbn ``` 在 Vue.js 中,你可以在模板中使用 `v-model` 绑定输入框中的密码,并使用 `watch` 监听密码的变化。当密码发生变化时,你可以使用 zxcvbn 计算密码的强度,并更新界面。 下面是一个简单的 Vue.js 组件示例,用于实现密码强度验证: ```html <template> <div> <label>Password:</label> <input type="password" v-model="password"> <p v-if="passwordStrength.score >= 0"> Password strength: {{ passwordStrength.score }} ({{ passwordStrength.feedback.warning }}) </p> </div> </template> <script> import zxcvbn from 'zxcvbn'; export default { data() { return { password: '', passwordStrength: { score: -1, feedback: {} } }; }, watch: { password: function() { this.passwordStrength = zxcvbn(this.password); } } }; </script> ``` 在这个示例中,我们在模板中使用 `v-model` 绑定输入框中的密码,并在 `watch` 中监听密码的变化。当密码发生变化时,我们使用 zxcvbn 计算密码的强度,并将结果存储在 `passwordStrength` 对象中。然后,我们在模板中使用 `v-if` 来显示密码强度评分和反馈。 注意,这个示例并没有实现密码强度要求的验证逻辑。如果你需要在密码不符合要求时显示错误消息,你可以添加一些额外的代码来实现这个逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值