gpt4 book ai didi

javascript - 从 crypto.randomBytes 中排除某些字符的正确方法

转载 作者:行者123 更新时间:2023-11-28 20:29:56 27 4
gpt4 key购买 nike

我有以下代码,基于 http://nodejs.org/docs/v0.6.9/api/crypto.html#randomBytes

crypto.randomBytes 32, (ex, buf) ->
user.tokenString = buf.toString("hex")
user.tokenExpires = Date.now() + TOKEN_TIME
next()

我正在使用它生成一个 tokenString 以用于 node.js/express 用户验证。

在某些情况下,生成的 tokenString 包含“/”正斜杠字符,这会破坏我的路由,例如,如果 tokenString 类似于 '$2a$10$OYJn2r/Ts.guyWqx7iJTwO8cij80m.uIQV9nJgTt18nqu8lT8OqPe' 找不到 /user/activate/$2a$10$OYJn2r 并且我收到 404 错误

是否有更直接的方法来在生成 crypto.randomBytes 时排除某些字符?

最佳答案

Crypto.randomBytes 生成随机字节。这与字符无关,字符是由我们查看字节的方式决定的。

例如:

user.tokenString = buf.toString("hex")

将缓冲区转换为字符串(其中两个字符代表每个字节),字符范围为0-9a-f

另一种(可能更合适的方法是使用更紧凑的编码。Base64Url 是一种提供 URL/文件名安全的字符串编码的编码

user.tokenString = base64url(buf)

这里是an NPM package you can use for it .

除此之外,你的代码看起来不错。例如,如果您要调用 .toString() 而不指定 "hex" 或指定诸如 "ascii" 之类的内容,它就会像下面这样中断:在您的问题描述中。

关于javascript - 从 crypto.randomBytes 中排除某些字符的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16629788/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com