我有以下登录 api 端点
app.post('/login', (req, res)=>{
new Promise((resolve,reject)=>{
client.query('select * from login_info where username = $1 and password = $2', [req.body.name, req.body.password],(error, result)=>{
if(error!=null)
{
reject(400);
}
if(result.rowCount==1)
{
resolve(200);
}
else
{
reject(400);
}
});
}).then((code)=>{
req.session.username = req.body.name;
console.log(req.session);
res.send({status : code});
}).catch((code)=>{
res.send({status : code})
});
});
现在成功登录后,用户名变量存储在 session 对象中。
但我无法通过另一个 api 端点获取该“用户名”变量的 value。
app.post('/logout', (req, res)=>{
console.log(req.session.username + " is trying to logout");
req.session.destroy(()=>{
console.log("session destroyed");
});
res.send({status : 200});
});
现在,当我向“/login”API 端点发出请求时,“用户名”存储在 session 中,之后每当我调用“/logout”API 端点时,“未定义正在尝试注销”是显示。
我无法理解为什么????
我使用 ReactJs 作为我的前端。
回答1
这里在 cookies 对象中将安全属性的 value 设置为 false。
为什么 ??
安全的作用是它只会通过 HTTPS 连接发送 cookie。现在,如果我们尝试使用 HTTP 连接,那么 cookie 可能无法正确发送,因此会导致意外结果。