#node.js #session #session-cookies
#node.js #сеанс #сеанс-файлы cookie
Вопрос:
У меня есть следующий код диспетчера сеансов, настроенный в node.js
app.use(function(req, res, next) {
if (req.session amp;amp; req.session.id) {
DB.FindUser(req.session.id, function(err, id) {
if (err) throw err;
if (id) {
res.setHeader('X-Seen-You', 'true');
next();
}else{
res.json({code : 100, status : false, msg :"Error in connection database"});
}
});
} else {
DB.AddUser({ sessionId: Helper.GUID(), ip: req.headers.origin}, function(err, id){
if(id){
req.session.id = id;
res.setHeader('X-Seen-You', 'false');
}
next();
});
}
});
При первой отправке запроса создается новый сеанс, сохраняется в БД и отправляется файл cookie клиенту.
При последующих повторных запросах сеанс все еще активен и находит идентификатор.
Но если я закрою браузер и снова открою, файл cookie не будет отправлен с клиента.
Как мне убедиться, что файл cookie сохраняется. Я не имею большого представления об этом. Я думал, что продолжительности достаточно, чтобы гарантировать, что cookie останется в живых.
app.use(sessions({
cookieName: 'session',
secret: Helper.GUID(),
duration: 30 * 24 * 60 * 60 * 1000, //(1 month)
activeDuration: 30 * 24 * 60 * 60 * 1000 //(1 month)
}));
Дополнительная информация —
Мой клиент из другого домена. Я добавил функциональность CORS:
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:8000');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
И в моем коде AngularJS добавлено значение withCredentials:
clinetApp.config([
'$httpProvider',
function($httpProvider) {
$httpProvider.defaults.withCredentials = true;
}
]);