使用快速hbs渲染时无法设置标题

时间:2018-05-20 00:14:17

标签: node.js express header handlebars.js

我试图在view-engine-hadlebars渲染之前将一个标记插入到一个发布路径的响应头中。

这是我想要设置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);
})

})

这是我想要接收标题的获取路径:

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
})
})

获取路线说它未定义。任何想法都非常感激。

1 个答案:

答案 0 :(得分:1)

这不是标头的工作原理。当您在/signup路由上执行:/newpoll时,您正在设置响应标头,该标头将发送到客户端,但不会保留到其他请求。

当用户点击该链接并转到a时,无法通过/signup元素发送自定义HTTP标头,因此您的代码将无效。< / p>

您正在寻找的是一个Cookie,它将在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"]); }); 上设置,并且可以在任何其他路线上检索。

authenticate

查看res.cookie文档,了解如何设置安全选项。

注意:我不知道您的方法x-auth做了什么,或者您如何对用户进行身份验证,但您应该检查是否设置了value= Cookie那里。