koajs session - 会话存储在哪里?
koajs session - where is the session stored?
我正在为 koajs 会话使用 this 模块。
我查看了源码,实在看不懂。
我想知道它在哪里保存会话数据,因为我没有看到创建的文件,并且当服务器重新启动时会话数据仍然存在。
我感觉它正在将数据保存在 cookie 本身中,然后我看到它创建了两个带有乱序文本的 cookie。
现在,它是在 cookie 本身中对数据进行编码(不安全)还是以我尚不理解的方式将数据保存在服务器上?
根据koa-session库中的this section of code,session数据被编码成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});
并在存储 id 的客户端创建了一个 cookie。
当服务器请求客户端时,我通过 POST 将此 ID 与请求一起发送或获取路由解析的内容:
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 ...
});
如果你使用护照工作人员,你应该考虑令牌而不是 id,因为人们可以知道你的 Facebook id。出于这个原因,令牌是您喜欢用来发送的方式。
有一个 Whosebug 问题可以帮助您找到自己的出路:
nodejs passport authentication token
我正在为 koajs 会话使用 this 模块。
我查看了源码,实在看不懂。 我想知道它在哪里保存会话数据,因为我没有看到创建的文件,并且当服务器重新启动时会话数据仍然存在。
我感觉它正在将数据保存在 cookie 本身中,然后我看到它创建了两个带有乱序文本的 cookie。
现在,它是在 cookie 本身中对数据进行编码(不安全)还是以我尚不理解的方式将数据保存在服务器上?
根据koa-session库中的this section of code,session数据被编码成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});
并在存储 id 的客户端创建了一个 cookie。 当服务器请求客户端时,我通过 POST 将此 ID 与请求一起发送或获取路由解析的内容:
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 ...
});
如果你使用护照工作人员,你应该考虑令牌而不是 id,因为人们可以知道你的 Facebook id。出于这个原因,令牌是您喜欢用来发送的方式。
有一个 Whosebug 问题可以帮助您找到自己的出路: nodejs passport authentication token