当前位置 : 主页 > 网页制作 > Nodejs >

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

来源:互联网 收集:自由互联 发布时间:2021-06-16
我试图学习Node.js而不使用任何第三方模块或框架.我已经到了这一点,我要弄清楚如何为登录的用户提供会话ID … 到目前为止,我知道我可以通过在标题中写入会话ID来设置会话ID,设置co
我试图学习Node.js而不使用任何第三方模块或框架.我已经到了这一点,我要弄清楚如何为登录的用户提供会话ID …

到目前为止,我知道我可以通过在标题中写入会话ID来设置会话ID,设置cookie:

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

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

request.headers.cookie(request.url);

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

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

注意:您应该使用会话管理器来处理您使用的任何框架..无论是connect,express,koa还是其他任何框架.

这将使用crypto.randomBytes给你一个UUID version 4 (random).

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,但加密包不是浏览器中的选项.

网友评论