2016-11-22 99 views
0

我正在處理的網站需要使用登錄所需的中間件登錄每個頁面。強制Django頻道Websocket身份驗證

我試圖與渠道增加的WebSockets的雙向通信客戶端Web瀏覽器的通知。

Daphne作爲接口服務器運行,manage.py runworker運行worker。

我有一個在當連接已開通運行consumers.py文件工作的功能。

的問題是,這種連接可以打開,而且功能通過任何Web瀏覽器上運行,而不登錄。

我如何可以強制登錄的連接才能打開?

回答

0

如果您希望用戶登錄該頁面,您可以使用裝飾器login_required作爲您的視圖。 首先需要導入

from django.contrib.auth.decorators import login_required 

和意見,那麼你可以使用它,例如與其他常規裝飾: -

@login_required 
def my_view(request): 
    ... 

這是什麼會做的是它可以確保用戶在他能夠查看頁面之前登錄。

這將帶他到登錄頁面,如果你已經實現了你的認證後端和他登錄後,然後重定向到頁面視圖。如果他已經登錄,則允許他直接訪問該頁面。

+0

我使用的是需要登錄middeware截獲到該網站的所有請求。 – JohnBoy

+0

您是否在中間件中指定了settings.LOGIN_URL –

+0

是的,並且在沒有登錄的情況下對所有URL的任何請求都會重定向到/ login模板。 – JohnBoy

0

看到一個"channels_api"庫,他們正在做一項偉大的工作。