node.js - 如何在 node.js 中生成 session ID?

标签 node.js session

<分区>

我想使用低级别的 session 。如何在 node.js 中生成 session ID?

最佳答案

不清楚您要实现的目标,但是... session ID 只是一个 ID!你可以随心所欲地生成它。除了唯一性之外没有其他要求。让它安全是个好主意。例如,此函数可能是您的 session ID 生成器:

var crypto = require('crypto');

var generate_key = function() {
    // 16 bytes is likely to be more than enough,
    // but you may tweak it to your needs
    return crypto.randomBytes(16).toString('base64');
};

您调用 generate_key() 并检查它是否存在于数据库中。如果是,您会再次调用它,依此类推。

编辑:让我解决评论:

  1. 最初我在这里有 Math.random() 并且有人担心这不是加密安全的。虽然这是真的,但我没有看到 OP 要求加密安全解决方案。据我们所知,他可能不需要它,毕竟我们不知道他正在处理什么样的 session 。最终我决定改变它,因为加密解决方案更安全并且(大多数时候)它没有任何缺点。
  2. Uuid 是一个可接受的替代方案。我个人更喜欢 uuid4,因为它不会泄露信息,但这并不重要。
  3. 生成任何类型的 id 所需的计算量不太可能重要,而且大部分时间(如果有的话)它将由数据库通信主导。除非你正在处理 pbkdf2 种算法。我不会用那个。但如果你是,那么你可能有你的理由。

关于node.js - 如何在 node.js 中生成 session ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18078711/

相关文章:

javascript - 从服务器端将属性绑定(bind)到套接字对象似乎无法正常工作

node.js - 表单 save mongoose 上随机生成 id

node.js - socket.io 未向所有客户端发送

php - 即使浏览器关闭,CodeIgniter 如何保留 session 数据?

java - 使用 Java session 进行登录/注销

mysql - session.createCriteria(type) 正在查询小写的表名

mysql - 类型错误 : Cannot read property 'filename' of undefined--multer

Node.js socket.io-client connect_failed/connect_error 事件

javascript - 在 Javascript 函数中销毁 PHP SESSION

Asp.net 在 chrome 的某些页面上回发时丢失 session