【问题标题】:How can i add a front end and backend validation to a node js user authentication project?如何将前端和后端验证添加到节点 js 用户身份验证项目?
【发布时间】:2021-10-20 10:02:17
【问题描述】:

我最近做了一个带有一些用户认证表单的node js ejs项目。有没有一种特殊的方法可以向前端和后端添加验证。如何在 get 和 post 方法之间传递我的数据值。 ?有没有可能这样做。请帮忙谢谢

【问题讨论】:

    标签: node.js forms validation ejs


    【解决方案1】:

    前端登录验证

    您不应该在前端验证或验证任何内容。话虽如此,您可以使用 HTML 属性来帮助减轻后端的一些负担,并防止人们在输入时看到密码。

    <input type="password" class="input" name="password" autocomplete="off" placeholder="Enter password" required>
    

    在这个例子中,密码类型属性是告诉 HTML 它应该期待的输入类型的关键。添加 required 将防止用户将该字段留空,因此它可以帮助减轻后端的负担并添加另一个非常基本的安全级别(这仍然不是必需的安全输入)。有关密码输入类型的更多信息,请查看 MDN 条目:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/password

    Node JS 的后端登录验证

    您可以在后端使用路由 (routes.js) 文件来服务不同的页面,并通过验证器传递信息。确定登录数据是否有效应始终在连接到数据库(例如 MySQL)的单独控制器文件中完成。验证或清理用户输入应始终在此文件中完成,但特定于您使用的数据库类型。通常这涉及在处理数据库时转义用户输入或使用准备好的语句。

    但是,在更一般的意义上,我认为最好的 Node JS 验证器是 express-validator(尤其是如果您已经在后端使用 express)。通过创建自己的中间件并使用现有的中间件,您可以控制在客户端和服务器之间传递的内容。这允许您控制您的服务器是继续执行 get/post 请求还是应该发送错误页面。

    要在您的项目中包含 express-validator,只需使用 npm 安装包并将其包含在您的文件中:

    const { body } = require("express-validator");
    

    或者如果您需要验证作为 url 参数传递的数据:

    const { query } = require("express-validator");
    

    routes.js 文件中使用此验证器输入密码的示例:

    router.post("/login",
        [
            body("password", "The Password must be of minimum 4 characters length")
                .notEmpty()
                .trim()
                .isLength({ min: 4 }),
        ],
        login
    );
    

    此示例处理登录 url 端点,如果在此端点发出发布请求,则使用标准快速验证方法验证类名为“password”的 ejs/html 正文元素。有关如何使用 express-validator 的更多示例和信息,请查看:https://express-validator.github.io/docs/

    【讨论】:

    • 非常感谢,我在我的项目中添加了前端和后端验证,方法和上面一样。它工作正常。
    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2014-07-16
    相关资源
    最近更新 更多