6

我正在使用 flask-login 扩展设置一个 Flask 应用程序。flask-login 文档建议设置一个替代令牌生成器,它不简单地使用用户 ID 和应用程序密码来创建会话令牌(这是默认方法)。但它没有为如何做到这一点提供任何明确的建议。

因此,对于User.get_auth_token(),我使用make_secure_token用户电子邮件和密码作为参数的函数(所以我得到了这些参数的哈希值 + 应用程序密码)。

接下来,我需要能够通过token_loader回调从令牌中获取用户。在 flask-login 中生成令牌的默认方法是同时包含原始用户 ID 和用户 ID + 应用程序密码的哈希值。这使得从令牌中查找用户变得非常简单——只需获取 ID 并查找用户即可。

但是我应该在会话令牌中公开用户 ID 吗?如果我不这样做,我应该将会话令牌存储在数据库中还是使用用户 ID 存储在其他地方以使查找成为可能?

简而言之:有谁知道创建安全令牌和相应token_loader回调的最佳实践是什么?

4

1 回答 1

4

在 Flask 邮件列表中,Matt Wright 向我指出了在 Flask -security 扩展中的实现。他使用itsdangerous创建一个签名令牌,该令牌编码一个URLSafeTimedSerializer()由用户 ID 和密码哈希组成的序列化(通过)列表。然后可以对令牌进行解码以获取用户 ID。

于 2012-09-26T16:35:17.560 回答