Crypto-js 和 Express 如何防止 crypto-js 在加密 ID 中添加斜杠以防止服务器将其读取为新的子路由?

Crypto-js and Express How can I prevent crypto-js from adding slashes into encrypted IDs to prevent server from reading it as a new sub route?

我正在使用 crypto-js 加密用户 ID,以便通过 url 发送它,如下所示,以便用户在点击时验证它:

http://localhost:3000/api/customer/activate/U2FsdGVkX1DXzzLuf9TgBf31Mc2V/QBVAN05PovlNM

这是加密后的用户id:

U2FsdGVkX1DXzzLuf9TgBf31Mc2V/QBVAN05PovlNM

使用 crypto-js encrypt:

crypto.AES.encrypt(term.toString(), config.CRYPTO_PASSPHRASE_RES).toString(crypto.enc.Utf8)

当我 运行 API 时,它 return route not found,当我从加密的用户 ID 中删除 / 时,它起作用了。

如何防止 crypto-js 将 / 添加到加密 ID 中?

解决方案是先使用 encodeURIComponent(),然后使用 decodeURIComponent(),如下所示:

encodeURIComponent(crypto.AES.encrypt(term.toString(), config.CRYPTO_PASSPHRASE_RES).toString());

它会将 / 替换成其他东西。