2016-01-09 41 views
1

我在努力瞭解flask_logindjango如何知道用戶何時登錄以保留訪問權限?使用Flask/Django和javascript前端進行身份驗證

如果我使用ReactJsAngularflask-restfuldjango/tastypie,什麼被添加到未來json請求頭/身體,以確保我的用戶停留登錄?

回答

2

這是通過基於cookie的會話完成的。從the Flask documentation

除了請求對象也有叫會議第二個對象,它允許你存儲從一個請求到下一個特定於用戶的信息。這是在您的cookie之上實現的,並以加密方式簽署cookie。

the Django docs

Django提供了匿名會話的全力支持。會話框架允許您以每個站點訪問者爲基礎存儲和檢索任意數據。它將數據存儲在服務器端並提取Cookie的發送和接收。 Cookie包含會話ID - 不是數據本身(除非您使用的是cookie based backend)。

因此,對服務器的請求會自動包含一個cookie,用於指示服務器隨後使用該cookie來確定給定用戶的會話數據應該是什麼。一般來說,當Ajax請求是從客戶端應用程序發送到服務器時,將包含此cookie,從而確保用戶被認爲是登錄了這些請求。

在某些情況下,還可以(可選地)手動一個特殊標頭添加到HTTP請求以指示哪個用戶登錄。

Securing RESTapi in flask參見一些更多的信息。

1

如果您使用REST服務,那麼您應該看看oAuth。換句話說,它使用您附加到客戶端到服務器的每個請求的令牌,最後一個可以確定哪個用戶通過此令牌發送了此請求。

另一方面,您可以使用cookie或會話來確定用戶狀態。在這種情況下,您不需要爲請求添加任何標題。

另外,我建議你爲Django的這個包 - Django Rest Framework(你可以閱讀更多關於令牌和身份驗證通過REST)和this extension Flask。