2015-04-17 8 views
3

Я использую модуль this для сеансов koajs.сеанс koajs - где хранится сеанс?

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

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

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

ответ

6

Согласно this section of code в библиотеке 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 
}; 
+0

Любая идея, почему Коа сессии использует секрет, если он не подпишет печенье? – Markasoftware

0

Я сделал это, посылая серверы КОА this.session.passport.id с

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

и создал печенье на стороне клиента, где идентификатор хранится в. Если запрос на сервер клиент, я посылаю этот идентификатор с запросом через 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. По этой причине токены - это то, как вы любите использовать для отправки.

Существует вопрос StackOverflow, что поможет вам найти свой путь: nodejs passport authentication token

Смежные вопросы