gpt4 book ai didi

python - SQL Server 将 b'...' 添加到我存储的 jwt token

转载 作者:太空宇宙 更新时间:2023-11-04 02:39:17 24 4
gpt4 key购买 nike

我正在将用于 Web 服务身份验证的 JWT token 存储在 SQL Server 数据库中。我已将保存标记的列声明为 nvarchar(max) 类型,并将它们作为简单字符串传递到数据库中。当我插入 token 时,SQL Server 将 b'...' 添加到它。例如,假设我添加了 token ABC123,那么它会存储 b'ABC123'。

这导致了问题,因为当我将存储在数据库中的 token 与通过 api 传递的 token 进行比较时,由于额外的字符,比较失败(数据库似乎确实添加了小写 b 和存储字符串的两个单引号)。

我知道一旦从数据库中提取字符串,我就可以去掉 b 和引号,但我想知道为什么 SQL Server 这样做以及如何防止它这样做。

无论如何,我们将不胜感激。

编辑:pyodbc 是否有可能这样做?这是我要插入的代码:

cnxn = pyodbc.connect("<connection string>")
crsr = cnxn.cursor()
crsr.execute("insert into jwt values (?,?)", [userId, str(auth_token)])

也许它混淆了 Python 3 和 Python 2 字符串? (我使用的是 Python 3.6。)在这种情况下,我该如何修复它?

最佳答案

原来是python的“str”转换。 jwt.encode 返回一个字节数组,然后 str 变成 b'...'。解决方案是显式解码字节而不是使用 str。所以我的新插入方法是:

crsr.execute("insert into jwt values (?,?)", [userId, auth_token.decode("utf-8")])

确实是一个简单的解决方案,但非常晦涩。希望我的努力对其他人有帮助!

关于python - SQL Server 将 b'...' 添加到我存储的 jwt token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47004322/

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