Node.js 使用快速hbs渲染时无法设置标头

Node.js 使用快速hbs渲染时无法设置标头,node.js,express,header,handlebars.js,Node.js,Express,Header,Handlebars.js,我正试图在视图引擎hadlebars渲染之前将令牌插入post路由的响应头中 这是我想在其中设置haeder的邮政路线: app.post("/signup", (req, res) => { let email = req.body.usremail; let password = req.body.password; var user = new User({ email, password }) user.save().then(() => {

我正试图在视图引擎hadlebars渲染之前将令牌插入post路由的响应头中

这是我想在其中设置haeder的邮政路线:

app.post("/signup", (req, res) => {


let email = req.body.usremail;
let password = req.body.password;


var user = new User({
    email,
    password
})
user.save().then(() => {
    return user.generateAuthToken();
}).then((token)=>{


    res.set('x-auth', token);
    res.render("project.hbs", {
        paragraph: `Welcome ${email}. What would you like to do?`,
        button1: "New poll",
        button2: "See your polls",
        button3: "See all polls",
        link1: "/newpoll",
        link2: "/yourpolls",
        link3: "/allpolls",
        pie: true,
        two: true
    })
}, (e) => {
    console.log(e.message);
})

})
这是我希望在其中接收标头的get路由:

loginRouter.get("/newpoll", authenticate, (req, res) => {
console.log("newpoll/get:",req.header("x-auth"));

   res.render("project.hbs", {
    paragraph: `Enter your poll question and answers then submit`,
    quessubmit: true,
    method: "post",
    action: "/newpoll",
    ques: true
})
})

get路径表示它未定义。任何想法都值得赞赏。

标题不是这样工作的。当您这样做时:
res.set('x-auth',令牌)
/signup
路由上,您正在设置一个响应头,该头将被发送到客户端,但不会持续到其他请求

当用户单击链接并转到
/newpoll
时,无法通过
a
元素发送自定义HTTP头,因此代码无法工作

您正在寻找的是一个cookie,它将在
/signup
上设置,并且可以在任何其他路径上检索

const cookieParser = require('cookie-parser');
const express = require('express');

const app = express();
app.use(cookieParser());

app.post("/signup", (req, res) => {
    /* ... */
    res.cookie('x-auth', token);
    /* .. */
});

loginRouter.get("/newpoll", authenticate, (req, res) => {
    console.log("newpoll/get:",req.cookies["x-auth"]);
});
查看文档,了解如何设置安全选项


注意:我不知道您的
身份验证方法是什么,也不知道您是如何对用户进行身份验证的,但您可能应该检查
x-auth
cookie是否设置在那里。

您能显示完整的路线代码吗?我已经更新了代码,谢谢谢谢,这就是我想要的功能。我在另一个项目中使用了标题,但由于我使用了postman,并且能够在那里看到标题,所以被抛弃了