我有两个 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...
这是网站框架的正常行为吗?
任何建议如何解决这些问题?
非常感谢
艾蒂安