У меня довольно неуловимая проблема, при которой экспресс перестает сохранять данные сеанса в хранилище сеансов (MongoDB) или в файле cookie на стороне клиента примерно через сутки безотказной работы.Перезапуск серверного API-сервера, по-видимому, решает проблему, но только на другой день или около того, а затем повторяется и должен быть перезапущен.
Приложение узла работает на Ubuntu 16, и я не могунайти любые сообщения журнала, относящиеся к проблеме.
Я вставлю нижеуказанный код входа в систему, который устанавливает данные сеанса,
router.post('/login', async function(req, res) {
var user_name = req.body.user_name;
var password = req.body.password;
var currentTime = new Date().getHours() + ":" + new Date().getMinutes();
if(user_name && password) { // If both the username and password were sent.
User.findOne({"field_data.user_name": user_name}).select('password
field_data').then( async (user) => {
if(!user) { // A record was not found.
console.log(currentTime + " - Failed Login: " + user_name);
var returnResult = {
error: true,
msg: "User Not Found."
};
res.json(returnResult);
} else { // A record was found.
console.log(currentTime + " - User Logged in: " +
user.field_data.first_name + " " + user.field_data.last_name);
let result = await user.CheckCredentials(password);
if(result) {
var returnResult = {
error: false,
msg: "Logged In: " + user.field_data.first_name + " " +
user.field_data.last_name,
data: {
first_name: user.field_data.first_name,
last_name: user.field_data.last_name,
user_roles: user.field_data.user_role,
id: user._id
}
};
// Set session data which creates record in session store and client
// cookie.
req.session.userId = user.id;
req.session.userRoles = user.field_data.user_role ;
req.session.userName = user.field_data.first_name + " " +
user.field_data.last_name;
req.session.save(); // This line makes no difference.
} else {
var returnResult = {
error: true,
msg: "Invalid Credentials!"
};
}
res.json(returnResult);
}
}).catch((e) => {
console.log(e)
});
} else {
res.json({error: true, msg: "Invalid username/password!"});
}
});