【发布时间】:2019-10-10 21:36:15
【问题描述】:
我正在尝试使用“新密码”解决方案满足客户的要求。
我有这个要求:
1 - 新密码必须为 8 - 13 个字符,
2 - 密码必须包含数字,
3 - 密码必须包含大小写,
4 - 密码不能包含用户名和 finally
5 - 密码之前不得使用。
我不是 Javascript 方面的专家,我一直在尝试将所有这些要求放在一个脚本中,但我不确定如何解决这个要求的第 1、4、5 部分,所以我希望有人可以帮我解决我能做些什么来满足所有这些要求......
另外,我的“弱密码、中密码、强密码”消息显示在一个名为 msg 的 ID 的输入元素的顶部(只是让你知道)
这是我的脚本:
function validatePassword(password) {
// Do not show anything when the length of password is zero.
if (password.length === 0) {
document.getElementById("msg").innerHTML = "";
return;
}
// Create an array and push all possible values that you want in password
var matchedCase = new Array();
matchedCase.push("[$@$!%*#?&]"); // Special Charector
matchedCase.push("[A-Z]"); // Uppercase Alpabates
matchedCase.push("[0-9]"); // Numbers
matchedCase.push("[a-z]"); // Lowercase Alphabates
// Check the conditions
var ctr = 0;
for (var i = 0; i < matchedCase.length; i++) {
if (new RegExp(matchedCase[i]).test(password)) {
ctr++;
}
}
// Display it
var color = "";
var strength = "";
switch (ctr) {
case 0:
case 1:
case 2:
strength = "Contraseña Débil";
color = "red";
break;
case 3:
strength = "Contraseña Regular";
color = "orange";
break;
case 4:
strength = "Contraseña Fuerte";
color = "green";
break;
}
document.getElementById("msg").innerHTML = strength;
document.getElementById("msg").style.color = color;
}
【问题讨论】:
-
你不能在客户端实现#5。服务器必须保存所有旧密码,然后您使用 AJAX 查询服务器。
-
第 5 部分无法在客户端验证,必须在服务器端完成。您必须向后端发出 AJAX 请求,然后检查响应。
-
#1 是最容易测试的东西。你有什么问题?
-
@Barmar 我想知道#5 是服务器端还是客户端,所以我们可以忘记#5(因为有一个 IT 团队管理服务器端)我无法实现的我的脚本是 #1 和 #4 ,我不确定 #2 和 #3 是否正确
-
#1 的哪一部分有问题?你知道如何获取字符串的长度吗?你知道如何比较数字吗?如果你知道如何做这些事情,就把它们放在一起。
标签: javascript passwords