【问题标题】:Node.js: Return data to client with pure htmlNode.js:使用纯 html 向客户端返回数据
【发布时间】:2019-05-23 12:55:11
【问题描述】:

我想通过 node.js 创建一个非常简单的登录

我现在的问题是,如果用户输入了错误的密码,我想在 html 中添加一个新标签,上面写着“用户名或密码不正确” 仅使用纯html如何实现?

我现在得到的是我将被重定向到显示“缺少用户名或密码”的 /login,但我想留在登录页面上。

另一点是我想保持服务器端重定向。客户端重定向似乎是不好的做法。

app.post('/login', function (req, res) {
  database.query("SELECT EXISTS ( SELECT * FROM Users WHERE username = '" + req.body.username + "' AND password = '" + req.body.password + "')", function(err, data) {
    if(err) {
      console.log(err);
    }
    else{
      if(Object.values(data[0])[0] != 1) {
        res.status(400).send('Missing username or password'); // send this msg to html
      }
      else{
        res.redirect("main.html");
      }
      res.end();
    }
  });
});
app.listen(3001);

【问题讨论】:

    标签: node.js authentication server


    【解决方案1】:

    我不明白纯 html 部分。你的意思是在服务器端没有 javascript/ajax 或模板引擎?

    如果我必须只使用表单发布,我会为此使用 EJS。否则,您可以使用 ajax 请求。

    问题是您正在向客户端返回一个 html 结果。如果你使用 EJS,你必须返回如下;

    return res.render('login.html', {errMsg:'Missing username or password'});
    

    【讨论】:

    • 是的,很遗憾,如果不使用像 ejs 这样的渲染引擎,我无法直接更改 html。
    • 顺便说一句,如果此代码示例将在生产环境中运行,请记住,它容易受到 sql 注入的影响。例如任何人都可以将 req.body.username 发送为“blabla”或 1=1;”。至少使用默认的 mysql.format 方法
    猜你喜欢
    • 2015-06-20
    • 2013-02-01
    • 2017-05-07
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 2021-03-12
    • 1970-01-01
    相关资源
    最近更新 更多