Сессия коая - где хранится сессия?
Я использую этот модуль для сессий коая.
Я проверил исходный код, но я действительно не могу понять это. Я пытаюсь узнать, где он сохраняет данные сеанса, потому что я не вижу файлов, созданных, и когда сервер перезапускается, данные сеанса все еще там.
У меня возникло ощущение, что он сохраняет данные в самом файле 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