未使用Node.js和Express设置Cookie

时间:2019-10-30 19:19:53

标签: node.js express

我试图用Node.js设置cookie并表达,但是当我检入chrome dev工具时,没有cookie。我显然做错了事,但不确定。

在我的 loginController.js 中,

exports.postLogin = async (req, res) => {
  const { email, password } = req.body;
  const user = await authenticate(email, password);
  if (!user) return res.status(403).send("Invalid email or password");
  const userData = {
    name: user.name,
    email: user.email,
    type: AUTH_USER_TYPE
  };
  res.cookie("token", userData, { httpOnly: true, signed: true });
  res.json(userData);
};

app.js 中,我有:

const cookieParser = require("cookie-parser");
app.use(cookieParser(process.env.COOKIE_SECRET));

1 个答案:

答案 0 :(得分:0)

您需要定义httpOnly: false,例如:

res.cookie("token", userData, { maxAge: 1000 * 60 * 10, httpOnly: false });

在客户端,您需要发送withCredentials: true的请求

$http({
    method: 'POST',
    url: 'url, 
    withCredentials: true,
    data : {}
}).then(function(response){
    //response
}, function (response) {
    //response
});

注意:httpOnly : false将无法通过浏览器中的document.cookie进行访问。它仍将与HTTP请求一起发送,如果您检查浏览器的开发工具,则很可能会在开发工具的“资源”标签中找到Chrome中的cookie。