如何在Node.js中生成会话ID?

我试图学习Node.js而不使用任何第三方模块或框架。 我已经到了一个地步,我要弄清楚如何给login用户提供会话ID …

到目前为止,我知道我可以通过在头文件中设置会话ID来设置cookie:

writeHead(200, {'set-cookie':'Math.random() ' } ); 

然后我可以检索会话ID并稍后将其与数据库进行比较。

 request.headers.cookie(request.url); 

但是,我如何生成会话ID值? 我是编程新手。 我想到的第一件事是使用Javascript的Math.random(); 并使用该值来设置cookie(会话ID)。 在我看来,这感觉很愚蠢,但这是我能想到的。

我想如何使用Node.js生成会话ID,没有第三方模块,请准系统!

注意:您应该使用会话pipe理器来处理任何框架。无论是连接,expression,koa还是任何其他数目。


这会给你一个UUID版本4(随机)使用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模块 。 encryption软件包不是浏览器内的选项,尽pipe您可以使用Browserify的encryption垫片 。

Interesting Posts