2012-11-28 45 views
0

我有两个共享相同数据库和一些函数的Django站点。每个站点都有自己的settings.py,其中包含不同的SITE_ID。每个站点都在其自己的runserver进程下运行。Django站点框架:如何管理对共享相同数据库的不同站点的访问?

我有检查,如果允许用户登录期间访问当前站点此自定义后端:

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_ID从Site.objects.get_current().id获得并不会反映到第二个站点ID,我们总是从登录的第一个站点接收到SITE_ID ...

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

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

非常感谢

艾蒂安

回答

0

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

here

+0

会话中间件已经使......我必须做有关会议,以获得正确的SITE_ID什么特别的事?为什么get_current_site(request)似乎坚持先登录网站ID? –

相关问题