gpt4 book ai didi

javascript - 根据 API 值检查密码强度

转载 作者:行者123 更新时间:2023-11-27 23:44:04 24 4
gpt4 key购买 nike

我从一个 API 获取我的密码规范,然后我将对象拆分为所需的字段,并检查我是否具有所需的密码低位、高位、特殊和长度的数量。

    function isStrong(passwordChecker) {

if (!passwordChecker) {
return false;
}

debugger;
var securityOption = JSON.parse(localStorage.getItem("Security"));

var MinLength = securityOption.PasswordMinRequiredLength;
var SpecialChars = securityOption.PasswordMinRequiredNonalphanumericCharacters;
var MinLowercase = securityOption.PasswordMinRequiredLowercase;
var MinUppercase = securityOption.PasswordMinRequiredUppercase;

//LenghtCheck
if (passwordChecker.length < MinLength);
return false;

if (!CountSpecialChars(passwordChecker) > SpecialChars) {
return false;
}

if (MinLowercase > 0) {
if (!CountLowerCase(passwordChecker) > MinLowercase) {
return false;
}
}

if (MinUppercase > 0) {
if (!CountUpperCase(passwordChecker) > MinLowercase) {
return false;
}
}
}

function CountSpecialChars(text) {
var Count = 0;
for (var i = 0; i < text.length; i++) {
var c = text[i];

if (text[i] >= 33 && text[i] <= 63){
Count++;
}
}
}

function MinLowercase(text) {
var Count = 0;
for (var i = 0; i < text.length; i++) {
var c = text[i];
if (text[i] >= 97 && text[i] <= 122) {
Count++;
}
}
}

function MinUppercase(text) {
var Count = 0;
for (var i = 0; i < text.length; i++) {
var c = text[i];
if (text[i] >= 65 && text[i] <= 90) {
Count++;
}
}
}

现在我想做的是,整体检查不同的条件,如果所有条件都为真,则将类更改为绿色..

        $(pageId + ' #password').bind('keyup', function () {
var currentpassword = $(pageId + ' #password').val();
if (isStrong(currentpassword)) {
$(pageId + ' #password').addClass('green');

} else {
$(pageId + ' #password').addClass('red');
}

});

我不确定如何检查整个条件并返回一个整体 true 因为当我开始尝试输入我的密码时它会立即变为绿色,因为在我的密码规范中你不需要任何大写或小写字母所以任何输入一个 char 它返回 true..

最佳答案

您应该重构您的函数,以便它们接受字符串和参数并返回 true 或 false。例如:

function CountSpecialChars(text) {
var Count = 0;
for (var i = 0; i < text.length; i++) {
var c = text[i];

if (text[i] >= 33 && text[i] <= 63){
Count++;
}
}
}

if (!CountSpecialChars(passwordChecker) > SpecialChars) {
return false;
}

应该改为:

function CountSpecialChars(text, min) {
var count = 0;
for (var i = 0; i < text.length; i++) {
var c = text[i];

if (text[i] >= 33 && text[i] <= 63){
count++;
}
}

return count > min;

}


return CountSpecialChars(passwordChecker, SpecialChars);

此外,作为奖励,您还可以通过使用 replace 来避免这些函数的 for 循环,如下所示:

function MinChars(text, min) {

return text.length > min;

}

function MinUppercase(text, min) {

var non_uppers = /[^A-Z]/g;

var uppers = text.replace(non_uppers, text);

return uppers.length > min;

}

function MinLowercase(text, min) {

var non_lowers = /[^a-z]/g;

var lowers = text.replace(non_lowers, text);

return lowers.length > min;

}

function MinSpecialChars(text, min) {

var non_specials = /[^!-\?]/g;

var specials = text.replace(non_specials, text);

return specials.length > min;

}

现在有了这些功能,您可以:

if !MinChars(pw, MinLength) return false;
if !MinSpecialChars(pw, SpecialChars) return false;
if !MinLowercase(pw, MinLowercase) return false;
if !MinUppercase(pw, MinUppercase) return false;
return true;

关于javascript - 根据 API 值检查密码强度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30661099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com