Сессия коая - где хранится сессия?

Я использую этот модуль для сессий коая.

Я проверил исходный код, но я действительно не могу понять это. Я пытаюсь узнать, где он сохраняет данные сеанса, потому что я не вижу файлов, созданных, и когда сервер перезапускается, данные сеанса все еще там.

У меня возникло ощущение, что он сохраняет данные в самом файле cookie, а потом вижу, что он создает два файла cookie с зашифрованным текстом.

Теперь, это кодирует данные в самом куки (небезопасно), или это сохраняет данные на сервере способом, которого я еще не понимаю?

2 ответа

Решение

В соответствии с этим разделом кода в библиотеке сеанса koa данные сеанса кодируются в JSON, затем в base64, а затем присоединяются к cookie.

Session.prototype.save = function(){
  var ctx = this._ctx;
  var json = this.toJSON();
  var opts = ctx.sessionOptions;
  var key = ctx.sessionKey;
  // set expire into cookie value
  var maxAge = opts.maxAge || ONE_DAY;
  json._expire = maxAge + Date.now();
  json._maxAge = maxAge;
  json = encode(json);
  debug('save %s', json);
  ctx.cookies.set(key, json, opts); // <-- this is where the session is being saved
};

Я сделал это, отправив серверам Koa this.session.passport.id с

yield this.render('template',{id: this.session.passport.id});

и создал cookie на стороне клиента, где хранится идентификатор. Когда сервер запрашивает клиента, я отправляю этот идентификатор вместе с запросом через POST или GET, что разрешается маршрутом:

public.get('/resource/:id',function* (){
 console.log('do stuff with your id'+this.params.id);
// for example you can check against the id of the passport user you stored in a database of logged in users ...
});

Если вы используете персонал паспорта, вы должны думать о токенах вместо идентификатора, потому что люди могут знать ваш идентификатор Facebook. По этой причине токены - это то, что вам нравится для рассылки.

Есть вопрос Stackru, что поможет вам найти свой путь: токен проверки подлинности паспорта nodejs

Другие вопросы по тегам