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());
它会将 /
替换成其他东西。
我正在使用 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());
它会将 /
替换成其他东西。