保护节点中的随机令牌.js

2022-08-29 23:46:59

这个问题中,Erik需要在Node.js中生成一个安全的随机令牌。有一种生成随机缓冲区的方法。但是,node 中的 base64 编码不是 url 安全的,它包含 和 而不是 and 。因此,我发现的生成此类令牌的最简单方法是crypto.randomBytes/+-_

require('crypto').randomBytes(48, function(ex, buf) {
    token = buf.toString('base64').replace(/\//g,'_').replace(/\+/g,'-');
});

有没有更优雅的方式?


答案 1

尝试 crypto.randomBytes()

require('crypto').randomBytes(48, function(err, buffer) {
  var token = buffer.toString('hex');
});

“十六进制”编码适用于节点 v0.6.x 或更高版本。


答案 2

同步选项,以防万一,如果您不是像我这样的JS专家。不得不花一些时间在如何访问内联函数变量上

var token = crypto.randomBytes(64).toString('hex');