Node.js ExpressJS使用不带EJS的数据重定向用户

Node.js ExpressJS使用不带EJS的数据重定向用户,node.js,rest,express,Node.js,Rest,Express,我想使用NodeJS和ExpressJS创建一个登录系统。用户键入其凭据,然后服务器检查这些凭据是否有效。如果有效,服务器会将用户重定向到主页并发送数据,包括用户的凭据(供进一步使用)。这是宁静的 const app = require("express")(); const bodyParser = require('body-parser'); app.get("/login", function(req, res) { res.sendFile(__dirname + "/fron

我想使用NodeJS和ExpressJS创建一个登录系统。用户键入其凭据,然后服务器检查这些凭据是否有效。如果有效,服务器会将用户重定向到主页并发送数据,包括用户的凭据(供进一步使用)。这是宁静的

const app = require("express")();
const bodyParser = require('body-parser');
app.get("/login", function(req, res)
{
    res.sendFile(__dirname + "/front-end/login.html");
});
app.post("/login",function(req, res)
{
    var username = req.body.username;
    var password = req.body.password;
    //returns whether the credentials work
    var credentialsPassed = checkCredentials(username,password);
    if(credentialsPassed)
    {
        //redirect to home-page and pass along the user's credentials for further use
    }
});
我已经读过了。答案发送url中的数据。但是,我需要发送用户的凭据,因此在URL中传递它是不安全的。另一种选择是使用EJS(或类似的东西),但我必须下载一个相当大的模块来完成这项任务。


有没有更好的方法?

如果不希望在URL中传递数据,可以将其添加到req.users或res.locals/req.locals.Definition: [


另外,在您传递的链接中,他们说您可以将数据保存在req.session中,这可能是解决问题的最佳方法

我查看了这些。这些文件似乎将临时信息存储到服务器上,以便在新连接到来时,它可以使用刚刚存储的信息。这很好,但我需要一个REST api,这意味着每个request无法使用服务器上的东西。如果您想共享用户信息,是否尝试过使用json web令牌?Passport可以简化很多过程:如果您没有在URL中传递数据,那么您可以选择将数据放在cookie或用户会话(由cookie键入)中。在这两种情况下,您都可以在该用户的下一个请求(来自重定向的请求)到达时访问数据。将数据放在用户会话中通常更安全,因为会话保存在服务器上。您在其他评论中谈到不在服务器上存储任何内容,并且不知何故认为这是纯REST所必须做的。您不能同时拥有这两个。您可以将请求所需的所有内容都放在URL中,或者在n可以附加到某些服务器端数据或使用cookie的URL。这些都是实现此目的的方法。没有什么比REST更重要的了,因为您登录后在cookie或指向服务器上用户会话的URL中有一个令牌。