Python 如何使用Django制作集中式登录服务器?

Python 如何使用Django制作集中式登录服务器?,python,django,login,server,Python,Django,Login,Server,我目前工作的地方有许多Django项目,每个项目都在自己的VPS上运行,每个项目都在自己的子域(foo.example.com、bar.example.com等)下运行,如下图所示: 我想做的是让一个中央Django服务器管理每个应用程序的所有登录过程(授权和身份验证),当用户登录到foo.example.com然后转到bar.example.com时,他的会话保持活动状态,不需要再次输入凭据(用户/密码),同样,如果用户注销,在再次登录之前,他无法在其他项目上看到任何内容 类似于谷歌登录gm

我目前工作的地方有许多Django项目,每个项目都在自己的VPS上运行,每个项目都在自己的子域(foo.example.com、bar.example.com等)下运行,如下图所示:

我想做的是让一个中央Django服务器管理每个应用程序的所有登录过程(授权和身份验证),当用户登录到
foo.example.com
然后转到
bar.example.com
时,他的会话保持活动状态,不需要再次输入凭据(用户/密码),同样,如果用户注销,在再次登录之前,他无法在其他项目上看到任何内容

类似于谷歌登录
gmail.com
并进入
youtube.com
blogger.com
或更类似于我想做的事情:你登录
Google.com
并进入
drive.Google.com
photos.Google.com
calendar.Google.com
)或任何其他谷歌网站,您的会话将保持活动状态


是否有任何django包或任何其他方法可以帮助我完成它?

我会使用django rest框架并使用它登录。这将安装会话cookie,用户每次打开需要登录的页面时,您都可以检查该cookie。一旦cookie过期,或者django使cookie过期,用户将注销,如果您的身份验证检查良好,则不应向他们提供页面。这意味着,如果他们在任何地方登录到django服务器,他们都会保持登录状态,即使是在你的页面上,就像facebook或谷歌一样。当他们在任何地方从django服务器注销时,他们也将从您的远程页面注销


您可以阅读更多关于django rest框架身份验证的信息。

多亏了您的建议,我使用了这个软件包,它工作得非常好!你能告诉我它是怎么工作的吗?例如,用户带着令牌来到bar.example.com。您的应用程序如何检查它?它是否向您的身份验证服务器发出http请求以检查此令牌?您是否在每个bar.example.com中都有users表的副本,还是仅在auth server上有?或者他们使用相同的DB?只需使用django rest框架,如果有人在原始服务器上登录,就像在弹出窗口中一样,然后在每个页面上使用javascript检查身份验证,它就会工作,但Djagoser是一个更完整的解决方案。下面是一个如何通过djoser使用Json Web令牌(JWT)的示例: