我有两个共享相同数据库和一些功能的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 ...
网站框架的正常行为是什么?
有任何建议如何解决这些问题?
非常感谢
艾蒂安
答案 0 :(得分:0)
您应该在django会话框架中寻找答案。当有人登录时,会在会话中保存用户ID。会话只是一个临时存储(您可以在视图request.session
中访问它)。依赖于会话后端,它可以与其他站点进行交互。
看here