Flask Gunicorn分享令牌认证多个工作人员

时间:2019-06-10 07:01:30

标签: flask token gunicorn

我有一个使用Flask构建的API,并将Gunicorn与postgreSQL一起用作Linux(centOS)上的数据库

使用Gunicorn设置多个工作程序时,如果用户登录到API并获得令牌,则如果该令牌用于执行请求,则该令牌将不正确。

当只有一个工作程序和多个线程但没有多个工作程序时,它起作用。我应该如何处理令牌的存储,以便不同的工作人员可以从唯一的数据源中检索令牌?

要生成令牌,我们检索密钥并创建一个json网络令牌。然后,我们将此令牌和用户名存储在字典中。

此外,密钥是在烧瓶的每个开始处生成的,也许使用preload_app的枪豆可以帮助每个工人使用相同的密钥。

2 个答案:

答案 0 :(得分:1)

JWT的想法是令牌返回给用户,然后令牌将其附加到每个请求。然后,您无需存储任何内容,因为令牌具有内置的内容哈希,当有人弄乱令牌内容时,该哈希无效。发行令牌时,您唯一想做的就是记录哪个用户在那个时候登录了。

此外,我喜欢将我的秘密密钥存储为ENV变量,所有线程/工作人员都可以访问。当然,您可以在部署中有一个预加载步骤来重新生成它,但不要在Flask应用程序的生命周期中使用它。

答案 1 :(得分:0)

除了将您的http请求连接到python源代码Gunicorn中各自的功能之外,与身份验证没有任何关系。

您的身份验证令牌很可能会保存在数据库中,并随后针对每个请求进行检索/匹配。您可以根据需要选择将其缓存。