Django站点框架:如何管理共享同一数据库的不同站点的访问?

时间:2012-11-28 02:10:30

标签: django

我有两个共享相同数据库和一些功能的Django站点。每个站点都有自己的settings.py,其中包含不同的SITE_ID。每个站点都在自己的runserver进程下运行。

我有这个自定义后端,用于检查用户是否可以在登录期间访问当前站点:

user_or_none = super(SiteBackend, self).authenticate(**credentials)
if user_or_none and user_or_none.get_profile().sites.filter(id=Site.objects.get_current().id).count() < 1:
    user_or_none = None

如果SITE_ID存储在他的个人资料中(在auth_user_profile_site表中),用户可以访问该网站

我的问题是当用户登录他有权访问的网站时,他可以切换到他没有访问权限的其他网站,系统允许他进入。

此外,一旦登录到一个站点,似乎在切换到其他站点时,从Site.objects.get_current().id获得的SITE_ID与第二个站点ID无对应,我们始终从登录的第一个站点收到SITE_ID ...

网站框架的正常行为是什么?

有任何建议如何解决这些问题?

非常感谢

艾蒂安

1 个答案:

答案 0 :(得分:0)

您应该在django会话框架中寻找答案。当有人登录时,会在会话中保存用户ID。会话只是一个临时存储(您可以在视图request.session中访问它)。依赖于会话后端,它可以与其他站点进行交互。

here