我试图在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
})
})
获取路线说它未定义。任何想法都非常感激。
答案 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那里。