javascript - 登录失败的客户端通知

标签 javascript node.js express

我有一个 node.js 项目,我可以在其中填写登录表单,该表单将作为 url 参数发送到我的 server.js。如果发送的数据可以验证为已注册,则客户端将登录。我现在的问题是当它不起作用时如何通知客户端? 我的login.html 包含一个div,如果它是由我的login.js 文件触发的,则会显示该div。但是如何激活触发器,我可以将 url 参数发送到客户端并更改网站的行为吗?

server.js

app.get("/signUp/:username/:password", (req, res) => {
    auth.signUp({
        username: req.params.username,
        password: req.params.password
    }, (result) => {
        if (result) {
            res.redirect("../../index.html");
        } else {
            res.redirect("../../index.html");
            // res.send("Login failed");
        }
    })
})
app.get("/signIn/:username/:password", (req, res) => {
    auth.signIn({
        username: req.params.username,
        password: req.params.password
    }, (result) => {
        if (result) {
            res.redirect("../../index.html");
        } else {
            res.send("Login failed");
        }
    })
})

login.js 客户端

signIn = () => {
    let user = document.getElementById('signDiv-username').value;
    let pass = document.getElementById('signDiv-password').value;
    hideErrorLog();
    window.location.replace("/signIn/" + user + "/" + pass);
}
signUp = () => {
    let user = document.getElementById('signDiv-username').value;
    let pass = document.getElementById('signDiv-password').value;
    hideErrorLog();
    window.location.replace("/signUp/" + user + "/" + pass);
}

hideErrorLog = () => {
    let errorLog = document.getElementById("error-log");
    errorLog.style.display = "none";
    errorLog.innerText = "";
}
showErrorLog = (signUp) => {
    let errorLog = document.getElementById("error-log");
    errorLog.style.display = "block";
    if (signUp) {
        errorLog.innerText = "Benutzername existiert bereits!";
    } else {
        errorLog.innerText = "Benutzername/Passwort falsch!";
    }
}

最佳答案

我发现您一直在使用 window.location.replace() 调用 SignUp 和 SignIn API,并且您只是将用户名和密码替换为 url 的一部分,这并不是进行 API 调用的方式。并且永远不要在 URL 中传递用户名和密码等敏感数据,将它们作为请求正文的一部分发送。

您需要使用fetch()并在catch()中调用showErrorLog(),这意味着API调用中有错误。

获取代码示例

fetch('http://example.com/movies.json')
  .then(function(response) {
    // Add some code here
  })
  .then(function(myJson) {
    // call showErrorLog() here
  });

关于javascript - 登录失败的客户端通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56037048/

相关文章:

javascript - NodeJS - 查找未处理的 promise 拒绝行

javascript - 将单词转换为日期

node.js - 错误状态 : 404 returned with PUT request using Node. js (express)、Angular 和 MongoDB

javascript - 如何通过javascript或jquery获取li标签值

javascript - 如何显示html元素

javascript - 为什么 Node.js 没有原生 DOM?

node.js - MongoDB 中的慢速查询,使用组进行集合范围的聚合查询

node.js - 运行Firebase服务时Firebase找不到 'firebase-admin'模块

node.js - 了解 Node 中的非阻塞 IO

javascript - 如何将 Promise 与嵌套 foreach 一起使用