自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用戶被盜號了!為什么前端要被罵?

開發(fā) 前端
密碼設(shè)置的好不好,關(guān)乎到你的賬號安全性,越復(fù)雜的密碼越安全,所以密碼強(qiáng)度很重要,而我們在做注冊功能的時(shí)候,也有責(zé)任去幫協(xié)助用戶設(shè)置一個高密碼強(qiáng)度的密碼。

密碼強(qiáng)度

平時(shí)我們在瀏覽各種網(wǎng)站和 APP 的時(shí)候,都接觸過密碼這個東西!

密碼設(shè)置的好不好,關(guān)乎到你的賬號安全性,越復(fù)雜的密碼越安全,所以密碼強(qiáng)度很重要,而我們在做注冊功能的時(shí)候,也有責(zé)任去幫協(xié)助用戶設(shè)置一個高密碼強(qiáng)度的密碼!

那么密碼強(qiáng)度怎么計(jì)算呢? 且應(yīng)該如何實(shí)現(xiàn)以下這樣的密碼強(qiáng)度動畫展示效果呢?

圖片圖片

思路

其實(shí)思路很簡單:

1、監(jiān)聽密碼輸入框的變化。

2、密碼變化時(shí),獲取密碼文本,并通過某種方式計(jì)算這個密碼的強(qiáng)度分?jǐn)?shù)。

3、根據(jù)強(qiáng)度分?jǐn)?shù),改變下方塊的顏色和寬度。

0分:強(qiáng)度低,紅色,寬度 20%

1分:強(qiáng)度低,紅色,寬度 40%

2分:強(qiáng)度中,橙色,寬度 60%

3分:強(qiáng)度高,綠色,寬度 80%

4分:強(qiáng)度高,綠色,寬度 100%

圖片圖片

計(jì)算密碼強(qiáng)度分?jǐn)?shù)

用什么方式去計(jì)算密碼強(qiáng)度方式呢?我們可以用 @zxcvbn-ts/core這個庫來計(jì)算。

@zxcvbn-ts/core 是 zxcvbn 密碼強(qiáng)度估計(jì)器的 TypeScript 實(shí)現(xiàn)版本,用于幫助開發(fā)者評估用戶設(shè)置密碼的復(fù)雜度和安全性,計(jì)算的依據(jù)有:

  • 密碼長度: 越長分?jǐn)?shù)越高。
  • 字符類型: 數(shù)字、字母、符號。
  • 詞典攻擊檢測: 內(nèi)置詞典列表,檢測密碼強(qiáng)度。
  • 評分系統(tǒng): 0-4分,分?jǐn)?shù)越高越安全。
  • 熵計(jì)算: 評測密碼所需嘗試次數(shù),熵越高,分?jǐn)?shù)越高。
pnpm i @zxcvbn-ts/core

圖片圖片

密碼強(qiáng)度動畫展示效果

計(jì)算了分?jǐn)?shù)之后,我們需要根據(jù)分?jǐn)?shù)去展示:

  • 不同的顏色
  • 不同的寬度

我們可以使用屬性選擇器的方式,去完成這一個效果,看以下代碼:

圖片圖片

當(dāng)密碼改變的時(shí)候,會實(shí)時(shí)計(jì)算密碼強(qiáng)度分?jǐn)?shù),這也就是意味著 data-score 這個屬性會一直變,接著我們可以在樣式中,去根據(jù)屬性選擇器去設(shè)置不同的顏色和寬度。

圖片

現(xiàn)在可以看到這樣的效果:

圖片圖片

完善動畫效果

但是我們?nèi)绻雽?shí)現(xiàn)分格的效果,可以借助偽元素去做。

圖片

現(xiàn)在可以達(dá)到我們期望的效果:

圖片圖片

完整代碼

<template>
  <Input.Password v-model:value="password" autocomplete="none" />
  <div class="strength-meter-bar">
    <div class="strength-meter-bar--fill" :data-score="passwordStrength"></div>
  </div>
</template>

<script lang="ts" setup>
import { Input } from 'ant-design-vue';
import { computed, ref } from 'vue';
import { zxcvbn } from '@zxcvbn-ts/core';

const password = ref('');
const passwordStrength = computed(() => {
  return zxcvbn(password.value).score;
});
</script>

<style lang="less">
.strength-meter-bar {
  position: relative;
  height: 6px;
  margin: 10px auto 6px;
  border-radius: 6px;
  background-color: rgb(0 0 0 / 25%);

  // 增加的偽元素樣式代碼
  &::before,
  &::after {
    content: '';
    display: block;
    position: absolute;
    z-index: 10;
    width: 20%;
    height: inherit;
    border-width: 0 5px;
    border-style: solid;
    border-color: #fff;
    background-color: transparent;
  }
  &::before {
    left: 20%;
  }
  &::after {
    right: 20%;
  }
  // 增加的偽元素樣式代碼

  &--fill {
    position: absolute;
    width: 0;
    height: inherit;
    transition:
      width 0.5s ease-in-out,
      background 0.25s;
    border-radius: inherit;
    background-color: transparent;

    &[data-score='0'] {
      width: 20%;
      background-color: darken(#e74242, 10%);
    }

    &[data-score='1'] {
      width: 40%;
      background-color: #e74242;
    }

    &[data-score='2'] {
      width: 60%;
      background-color: #efbd47;
    }

    &[data-score='3'] {
      width: 80%;
      background-color: fade(#55d187, 50%);
    }

    &[data-score='4'] {
      width: 100%;
      background-color: #55d187;
    }
  }
}
</style>

責(zé)任編輯:武曉燕 來源: 前端之神
相關(guān)推薦

2021-07-06 07:13:24

EdgeChrome瀏覽器

2025-03-25 07:10:00

開發(fā)前端JavaScript

2017-02-16 07:37:19

前端程序軟件

2024-01-23 11:28:14

Eslint前端Oxlint

2012-12-17 15:02:34

Linux操作系統(tǒng)

2025-02-12 12:00:00

前端try-catchJavaScrip

2025-04-08 07:30:00

前端開發(fā)JavaScript

2015-06-04 11:22:22

前端程序員

2018-01-10 13:20:33

前端工程師

2020-06-10 09:06:48

MongoDB架構(gòu)高可用

2017-02-27 15:19:04

2023-07-23 17:19:34

人工智能系統(tǒng)

2024-06-24 07:58:00

2015-04-23 09:29:05

iOSpython

2020-12-09 15:26:00

人工智能律師互聯(lián)網(wǎng)

2016-10-21 14:17:13

大數(shù)據(jù)技術(shù)大數(shù)據(jù)行為分析

2015-12-07 10:49:43

卸載App用戶體驗(yàn)

2015-04-23 10:51:13

iOSpython

2021-07-06 05:10:08

瀏覽器技巧Edge

2022-05-22 21:23:10

前端監(jiān)控系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號