快递会话授权
问题描述:
我是很新的express.js,我试图做一个会话cookie的你已经登录后,我能够启动会话,并能够成功登录,但会话似乎没有进入下一个目录。在开始会议之前,我没有包括bodyparser-thingy。快递会话授权
router.use(bodyParser.json());
router.use(bodyParser.urlencoded({ extended: true }));
router.use(session({
name: "authorization",
secret: "secret",
saveUninitialized: false,
resave: false,
cookie: {
secure: true,
httpOnly: true,
maxAge: 1000 * 60 * 60 * 24,
},
}));
router.route("/login")
.get(function(request, response) {
response.render("../views/partials/login");
})
.post(function(request, response, next) {
let username = request.body.username;
let password = request.body.password;
User.findOne({user: username}, function(err, user) {
if (err) {
throw err
}
// test password if matching
if (user !== null) {
user.comparePassword(password, function(err, match) {
if (err || !match)
}
request.session.user = username; // These seems to not follow
request.session.password = password;
});
} else {
response.redirect("/login");
}
});
});
但是,当我重定向到 “/家”,在request.session.user返回undefined
request.session.user -> undefined
function restrict(req, res, next) {
if (req.session) {
next();
} else {
req.session.error = "Access denied!";
res.sendStatus(403);
}
}
router.route("/home")
.get(restrict, function(request, response) {
console.log(request.session.user) ---> undefined
为什么没有在cookie中的任何用户?
很抱歉,如果这是一个nooby问题。
(PS我不想使用像护照等任何平台) (PSS我知道错误处理是不是最好的,但它是暂时的)
答
关于您cookie.secure标志从文档:设置为true时
注意小心 ,如兼容客户端将不会发送 饼干回在未来的服务器,如果浏览器不具有 HTTPS连接。
从您的意见,你不使用https连接和cookie不发送到服务器。
你使用cookie解析器的中间件? – Mouneer
@Mouneer是的,我喜欢! – Jesper
关于你的** ** cookie.secure标志,从文档: '注意设置为true时,为符合客户端将不发送cookie回服务器,将来如果浏览器不具备的HTTPS连接要小心。那么你使用https连接? – Mouneer