如何使用LDAP3身份验证为所有将来的请求保留用户名

时间:2015-09-21 17:27:01

标签: python flask flask-login

我已经为LDAP3身份验证编写了login.views.py,并且应用程序是这样的,一旦用户成功登录,它将使用户转到欢迎“用户名”显示的模板在所有未来请求页面的右上角。我的此登录模块的应用程序配置为 __init__.py。有关用户是否经过身份验证的模板代码的一部分是here

使用Flask的开发服务器登录后,所有上述代码都会在所有将来的请求(即应用程序的不同模块)中保留用户名;但是,当我将应用程序实时部署到生产服务器(nginx,uwsgi)时,用户名有时会保留,其他时间不会持久存在。

我在StackOverflow上跟随过两个类似的问题:first questionsecond question,但仍然无法理解解决我的问题。

成功登录后,如何保留用户信息以用于将来的所有请求?

1 个答案:

答案 0 :(得分:1)

您无法在Flask应用中使用全局变量。您有一个users dict来存储从LDAP获取的用户。在开发期间,这“工作”,因为开发服务器只使用一个进程。但是,在生产中,您最有可能在多个进程中运行应用程序。每个进程都有自己的users dict,因此只有在请求由处理用户登录的同一进程处理时才会加载用户。

您需要将用户数据存储在与应用程序分开的某个位置,以便在每个请求期间查找它。典型示例是数据库,但在这种情况下,您使用的是LDAP,只需通过加载程序函数中的LDAP从id获取用户数据。如果您试图避免向LDAP发出查询,那么您需要一些其他外部存储来存储和获取数据,例如数据库,内存缓存,redis等。您还可以在会话中抛出用户数据。 / p>