Node.js 使用快速hbs渲染时无法设置标头
我正试图在视图引擎hadlebars渲染之前将令牌插入post路由的响应头中 这是我想在其中设置haeder的邮政路线: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(() => {
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,并且能够在那里看到标题,所以被抛弃了