2015-05-03 64 views
2

我想創建一種快速響應的形式,用戶不需要登錄但用他的uuid(在url中)標識。此外,我需要限制他的權限,以便他只能做幾件事情。django-auth:登錄用戶uuid和限制權限

  1. 用戶獲取URL以UUID和事件的ID(如果他能響應)上的鏈接和響應頁面
  2. 用戶點擊打開
  3. 用戶通過UUID
  4. 確定了與事件的id事件響應表格生成
  5. 用戶可以選擇選項並提交表格 通常有多種其他選項(例如在菜單中)可用,但只有在用戶使用其用戶名和密碼標識時才能訪問這些選項。

當然,我可以寫一個特殊的視圖,但有沒有更優雅的方式,我可以重新使用我現有的視圖作爲響應?

回答

0

首先,您需要使用UUID來觸發登錄。

你如何解決這個問題將取決於你是否介意使用特定的登錄URL /視圖,或者你希望人們直接到達預期的URL /視圖(只需使用UUID參數)。如果您使用特定的視圖,您將檢查UUID(可能將其標記爲已用/過期),然後登錄該用戶。或者,對於UUID進行檢查並讓用戶通過任何網址/視圖進行登錄,您需要在中間件設置中使用位於AuthenticationMiddleware之前的自定義中間件。在每種情況下,一旦你登錄了用戶,你就需要在會話中存儲某種標誌來表明他們已經通過臨時登錄UUID進行了認證。

現在您已通過UUID進行身份驗證並登錄了用戶,現在是時候爲他們提供視圖。此時,您將在用戶會話中檢查標誌的存在以確定其權限。

您可以走得更遠,並創建另一箇中間件類來封裝會話查找,並向is_anonymous和is_authenticated屬性的同級請求的request.User對象添加屬性(稱爲「is_auth_temporary」)。