2012-11-28 46 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? –

相關問題