【发布时间】:2019-04-03 11:41:10
【问题描述】:
以下 python 代码使用 pyjwt 生成有效的 JWT 令牌:
>>> import jwt
>>> payload = {'nested': [{'name': 'me', 'id': '1'}]}
>>> token = jwt.encode(payload, 'secret')
>>> token.decode()
ey[...]ko0Zq_k
pyjwt 还支持从命令行界面调用。但是the docs 仅显示带有= 分隔键值对的示例,而不是嵌套有效负载的示例。
我的最佳猜测是:
$ pyjwt --key=secret encode nested=[{name=me, id=1}]
ey[...]0FRW9gyU # not the same token as above :(
这没有用。是根本不支持吗?
【问题讨论】:
-
也许您可以向后尝试 - 解码不需要的令牌并查看
json对象返回的内容以恢复您的工作。乍一看,存在一些可能性,包括id=1可能被解释为int而不是您预期的str。 -
好电话,我还没试过。但是它不起作用,它以json格式打印并且不会收回。
-
这是它返回的对象:
{'nested': '[{name=me,', 'id': '1}]'},它会出现紧跟在nested=...之后的任何内容都被逐字作为一个字符串作为嵌套的值。pyjwt encode上的扩展 CLI 帮助也不是很有帮助。最坏的情况是,CLI 可能不支持嵌套对象。 -
在我看来并非如此。我和他们一起打开了an issue。