我目前工作的地方有很多Django项目,每个项目都在自己的VPS上运行,每个项目都在自己的子域(foo.example.com,bar.example.com,...)下运行,如下所示图:
我想要做的是拥有一个中央Django服务器来管理每个应用程序的所有登录过程(授权和身份验证),以及当用户登录foo.example.com
然后转到bar.example.com
时,他的会话保持活动状态,不需要再次输入凭据(用户/密码),如果用户退出,他就无法在其他项目上看到任何内容,直到他再次登录。
类似于Google在gmail.com
上登录时所做的事情,并转到youtube.com
或blogger.com
(或更类似于我想要做的事情:您登录{{ 1}}并转到google.com
,drive.google.com
,photos.google.com
)或任何其他Google网站,您的会话保持有效。
是否有任何django-package或任何其他方式可以帮助我完成它?
答案 0 :(得分:2)
我会使用django rest框架并使用它登录。这将安装会话cookie,您可以在每次用户打开需要登录的页面时进行检查。一旦cookie过期,或者django使cookie过期,用户就会被注销,如果您的身份验证检查结果良好,则不应向他们提供页面。这意味着如果他们在任何地方登录django服务器,他们仍然会登录,甚至在您的页面上,就像使用facebook或google一样。当他们从任何地方注销django服务器时,他们也将从远程页面注销。
您可以阅读有关django rest框架身份验证here的更多信息。
答案 1 :(得分:0)
我无法对@shaihulud 的评论发表评论,因为我没有多达 50 个声望。为了回答这个问题,我写了一篇文章来解决这个问题,对于将来可能遇到这个问题的任何人,你可以找到这篇文章here