我试图在不使用任何第三方模块或框架的情况下学习Node.js。我已经明白了如何为登录的用户提供会话ID ...
到目前为止,我知道我可以通过在标题中写入来设置会话ID,设置cookie:
writeHead(200, {'set-cookie':'Math.random() ' } );
然后我可以检索会话ID,然后将其与数据库进行比较。
request.headers.cookie(request.url);
但是如何生成会话ID值?我是编程新手。我想到的第一件事是使用Javascript' Math.random(); 并使用该值设置cookie(会话ID)。在我看来它感觉很愚蠢,但这就是我能想到的程度。
我怎么想使用Node.js生成会话ID,没有第三方模块,请求准系统!
答案 0 :(得分:3)
注意:您应该使用会话管理器来处理您使用的任何框架..无论是connect,express,koa还是其他任何框架。
这将使用UUID version 4 (random)为您提供crypto.randomBytes
。
var crypto = require('crypto');
module.exports = genUuid;
function genUuid(callback) {
if (typeof(callback) !== 'function') {
return uuidFromBytes(crypto.randomBytes(16));
}
crypto.randomBytes(16, function(err, rnd) {
if (err) return callback(err);
callback(null, uuidFromBytes(rnd));
});
}
function uuidFromBytes(rnd) {
rnd[6] = (rnd[6] & 0x0f) | 0x40;
rnd[8] = (rnd[8] & 0x3f) | 0x80;
rnd = rnd.toString('hex').match(/(.{8})(.{4})(.{4})(.{4})(.{12})/);
rnd.shift();
return rnd.join('-');
}
你也可以使用npm的UUID module。尽管您可以使用Browserify's crypto shim。
,但加密包不是浏览器内选项