首页 > 解决方案 > 添加用于最小密码长度和复杂性的控件

问题描述

有人能告诉我如何为我的网站添加最小密码长度和复杂性的控制吗

这是数据库

CREATE TABLE Users(

id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
username VARCHAR(50) NOT NULL,
password VARCHAR(10) NOT NULL,
birthday DATE
);

CREATE TABLE dreams(

dream_id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(dream_id),
content text NOT NULL,
user_id INT,
FOREIGN KEY(user_id) REFERENCES Users(id)

);

我希望当用户注册并尝试创建密码时,他们会收到一条消息,告诉他们密码太弱或者必须由字母和数字组成..etc

我可以通过数据库做些什么吗?如果它在其他地方请帮助我是初学者我使用 nodejs-html-CSS-JavaScript 谢谢。

标签: javascripthtmlcssmysqlnode.js

解决方案


首先,您应该将验证设置为同时在服务器端和客户端工作。客户端,主要是为了用户体验,因为精通开发的人总是可以绕过浏览器中的任何东西。但是,根据您的陈述,您想要一个很好的用户消息并显示它,无论客户端是什么,这将帮助您的用户更好地了解如何使用您的表单。服务器端验证也应该到位,以防止不良数据保存在数据库中。

简而言之,您将需要他们携手合作。您不需要任何类型的特殊 js 库来进行最基本的验证。HTML5 将为您提供显示许多要求所需的内容,而无需额外的 javascript。但是,如果您不喜欢 HTML5 验证的外观,则需要使用某种 javascript。但是,我总是从使用它开始,因为它将帮助您的应用程序更容易满足可访问性标准,并且从那里,您可以通过在其上添加更花哨的基于 javascript 的东西来迭代以使其看起来更好。

该片段将有一个警告叠加层,不会在您的网站上发生。请参阅 ( https://www.w3schools.com/tags/att_input_pattern.asp ) 了解更多信息和这个相同的示例。

<form action="">
  <label for="pwd">Password:</label>
  <input type="password" id="pwd" name="pwd"
  pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}"
  title="Must contain at least one  number and one uppercase and lowercase letter, and at least 8 or more characters">
  <input type="submit">
</form>

现在在您的后端,您应该在处理表单的代码中创建一个函数,以在将其与其他数据库规则一起保存到数据库之前重新检查验证。如果由于用户或某些错误以某种方式绕过验证而导致此验证失败,您将在表单响应中发回一条失败消息,前端将在尝试保存到数据库失败后捕获并显示该消息。回答究竟如何去做需要更多关于如何设置应用程序的信息。

您还可以在数据库中创建一个表来存储您的验证规则,并可以通过某种 API 将这些规则传递给前端,以便前端和后端函数可以共享相同的规则,而不必硬编码相同的正则表达式或无论您处理什么规则。换句话说,两种验证的单一事实——用户体验检查和数据完整性检查。


推荐阅读