javascript - 添加用于最小密码长度和复杂性的控件
问题描述
有人能告诉我如何为我的网站添加最小密码长度和复杂性的控制吗
这是数据库
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 谢谢。
解决方案
首先,您应该将验证设置为同时在服务器端和客户端工作。客户端,主要是为了用户体验,因为精通开发的人总是可以绕过浏览器中的任何东西。但是,根据您的陈述,您想要一个很好的用户消息并显示它,无论客户端是什么,这将帮助您的用户更好地了解如何使用您的表单。服务器端验证也应该到位,以防止不良数据保存在数据库中。
简而言之,您将需要他们携手合作。您不需要任何类型的特殊 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 将这些规则传递给前端,以便前端和后端函数可以共享相同的规则,而不必硬编码相同的正则表达式或无论您处理什么规则。换句话说,两种验证的单一事实——用户体验检查和数据完整性检查。
推荐阅读
- c# - 如何在函数中传递委托和“普通类型”参数
- jenkins - 在 Jenkins 中创建构建步骤时排除特定文件扩展名的正确模式是什么?(文物不可复制)
- html - 无法将按钮组中的按钮对齐到 MVC 的顶部
- ios - 如何从 iOS Swift 中的本地目录加载 index.html 文件?
- python - 散景分类 vbar,x_range 不起作用
- sql - >= 提取日期时出现问题?
- .htaccess - 使用 .htaccess 文件的 URL 重写规则
- java - 使用堆栈的中缀到后缀 - Java
- r - ggplot2 饼图和甜甜圈在同一个图上,只有汇总数据
- sql - 访问 - 查询不可执行