如何在 python 中生成唯一的身份验证令牌?

新手上路,请多包涵

我正在尝试为我的 android 应用程序在烧瓶中编写基于令牌的身份验证。为此,我需要一个唯一的令牌,我可以使用它来验证用户。

Itsdangerous 库提供了一个 JSONWebSignatureSerializer 函数,我可以使用它来创建 JWT 令牌。所以我的第一个问题是,将 JWT 用于基于移动的身份验证是否安全?

其次,我对 django rest 框架如何生成它的令牌做了一点研究。

 def generate_key(self):
    return binascii.hexlify(os.urandom(20)).decode()

这个令牌是唯一的还是随机的?我应该使用哪一个进行基于移动设备的身份验证?

在 python 中为移动应用程序生成唯一令牌的基本方法是什么?

原文由 saprative 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 599
1 个回答

您可以像提到的那样使用内置 uuid 模块。 3.6 中发布的新模块 secrets 也能够创建独特的令牌。

 from uuid import uuid4

rand_token = uuid4()

下面的函数每次被调用时都会创建一个唯一的标记。 os.urandom 方法返回 20 个随机字节作为字符串, binascii.hexlify 方法将这 20 个字节中的每一个转换为该字节的 2 位十六进制表示。这就是返回值是两倍长的原因。

如果您想使用此方法并需要特定长度的标记,请使用所需长度的 一半 作为 os.urandom 方法的参数。

 def generate_key(self):
    return binascii.hexlify(os.urandom(20)).decode()

原文由 Sean Parsons 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题