0

我有两个 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...

这是网站框架的正常行为吗?

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

非常感谢

艾蒂安

4

1 回答 1

0

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

这里

于 2012-11-28T02:52:06.757 回答