65.9K
CodeProject 正在变化。 阅读更多。
Home

Angular 8 密码强度计检查方法

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2020年3月23日

CPOL

1分钟阅读

viewsIcon

10491

如何在 Angular 8 应用程序中创建密码强度条

必备组件

  • 具备 Angular 的基础知识
  • 必须安装 Visual Studio Code
  • 必须安装 Angular CLI
  • 必须安装 Node JS

步骤 1

让我们使用以下 NPM 命令创建一个新的 Angular 项目

ng new passwordStrengthBar  

第二步

现在,让我们使用以下命令创建一个新的组件

ng g c password-strength-bar

步骤 3

现在,打开 password-strength-bar.component.html 文件,并在文件中添加以下代码

<div id="strength" style="margin:  11px">     <small>{{barLabel}}</small>     

<ul id="strengthbar">
	<li>         </li>
	<li class="point"> </li>
	<li class="point"> </li>
	<li class="point"> </li>
	<li class="point"> </li>
	<li class="point">         

步骤 4

现在,打开 password-strength-bar.component.ts 文件,并在该文件中添加以下代码

import {Component, OnChanges, Input, SimpleChange} from '@angular/core';  
  
@Component({  
  selector: 'app-passoword-strength-bar',  
  templateUrl: './passoword-strength-bar.component.html',  
  styleUrls: ['./passoword-strength-bar.component.css']  
})  
export class PassowordStrengthBarComponent implements OnChanges  {  
  
  @Input() passwordToCheck: string;  
  @Input() barLabel: string;  
  bar0: string;  
  bar1: string;  
  bar2: string;  
  bar3: string;  
  bar4: string;  
  
  private colors = ['#F00', '#F90', '#FF0', '#9F0', '#0F0'];  
  
  private static measureStrength(pass: string) {  
      let score = 0;  
      // award every unique letter until 5 repetitions  
      let letters = {};  
      for (let i = 0; i< pass.length; i++) {  
      letters[pass[i]] = (letters[pass[i]] || 0) + 1;  
      score += 5.0 / letters[pass[i]];  
      }  
      // bonus points for mixing it up  
      let variations = {  
      digits: /\d/.test(pass),  
      lower: /[a-z]/.test(pass),  
      upper: /[A-Z]/.test(pass),  
      nonWords: /\W/.test(pass),  
      };  
  
      let variationCount = 0;  
      for (let check in variations) {  
      variationCount += (variations[check]) ? 1 : 0;  
      }  
      score += (variationCount - 1) * 10;  
      return Math.trunc(score);  
  }  
  
private getColor(score: number) {  
  let idx = 0;  
  if (score > 90) {  
    idx = 4;  
  } else if (score > 70) {  
    idx = 3;  
  } else if (score >= 40) {  
    idx = 2;  
  } else if (score >= 20) {  
    idx = 1;  
  }  
  return {  
    idx: idx + 1,  
    col: this.colors[idx]  
  };  
}  
  
  ngOnChanges(changes: {[propName: string]: SimpleChange}): void {  
      var password = changes['passwordToCheck'].currentValue;  
      this.setBarColors(5, '#DDD');  
      if (password) {  
          let c = this.getColor(PassowordStrengthBarComponent.measureStrength(password));  
          this.setBarColors(c.idx, c.col);  
      }  
  }  
  private setBarColors(count, col) {  
      for (let _n = 0; _n < count; _n++) {  
          this['bar' + _n] = col;  
      }  
  } 
}     

步骤 5

现在,打开 password-strength-bar.component.css 文件,并添加以下代码

ul#strengthBar {  
    display:inline;  
    list-style:none;  
    margin:0;  
    margin-left:15px;  
    padding:0;  
    vertical-align:2px;  
}  
.point:last {  
    margin:0 !important;  
}  
.point {  
    background:#DDD;  
    border-radius:2px;  
    display:inline-block;  
    height:5px;  
    margin-right:1px;  
    width:20px;  
}  

步骤 6

现在,打开 app.component.html 文件,并在该文件中添加以下代码

密码强度条

<div class="container">       
<div class="row">           
<div class="col-md-8 col-md-offset-2">                  
<div class="panel panel-default">                   
<div class="panel-body">                                                      
<div class="form-group">                               Email                
<div class="col-md-6">
<div class="form-group">                               Password
<div class="col-md-6">
<app-passoword-strength-bar>   

步骤 7

现在,打开 app.component.ts 文件,并添加以下代码

import { Component, OnInit } from '@angular/core';  
  
@Component({  
  selector: 'app-root',  
  templateUrl: './app.component.html',  
  styleUrls: ['./app.component.css']  
})  
export class AppComponent implements OnInit {  
  public account = {  
    password: null  
  };  
  public barLabel: string = "Password strength:";  
  
  constructor() { }  
  
  ngOnInit() {  
  
  }  
} 

步骤 8

现在,打开 app.module.ts 文件,并添加以下代码

import { BrowserModule } from '@angular/platform-browser';  
import { NgModule } from '@angular/core';  
import { FormsModule } from '@angular/forms';  
import { AppComponent } from './app.component';  
import { PassowordStrengthBarComponent } 
from './passoword-strength-bar/passoword-strength-bar.component';  
  
@NgModule({  
  declarations: [  
    AppComponent,  
    PassowordStrengthBarComponent  
  ],  
  imports: [  
    BrowserModule,  
    FormsModule,  
  ],  
  providers: [],  
  bootstrap: [AppComponent]  
})  
export class AppModule { } 

步骤 9

现在,让我们使用 'npm start' 或 'ng serve' 命令运行项目并检查输出。

How To Check Password Strength Meter In Angular 8

How To Check Password Strength Meter In Angular 8

How To Check Password Strength Meter In Angular 8

How To Check Password Strength Meter In Angular 8

摘要

在本技巧中,我们学习了如何在 Angular 8 应用程序中创建密码强度条。

请提供您对本文的宝贵反馈/评论/问题。请告诉我您是否喜欢并理解了它,以及我如何改进它。

历史

  • 2020年3月23日:初始版本
© . All rights reserved.