2012-01-19 29 views
0

在一個RESTful應用程序中,兩個請求之間不存在任何狀態。每個請求都被視爲一個全新的請求,即使它是由同一個用戶發送的。即沒有會話。在RESTful Web應用程序中管理登錄信息

在這種情況下,REST應用程序如何處理用戶登錄信息?

  1. 那麼,成功登錄後,服務器是否會生成一個安全令牌並將其發送給客戶端,然後客戶端將其發回給那裏的每個請求?
  2. 如果上述條件爲真,那麼安全令牌存儲在服務器中?數據庫? (記住:沒有會話)。
+0

可能的重複[你能幫我理解嗎? 「常見的REST錯誤:會話無關」](http://stackoverflow.com/questions/544474/can-you-help-me-understand-this-common-rest-mistakes-sessions-are-irrelevant) –

回答

1

是這樣的,登錄成功後,服務器生成一個安全令牌,並將其發送到客戶端和客戶端發回的每一個請求後有? 如果上述條件爲真,那麼安全令牌存儲在服務器中?數據庫? (記住:沒有會話)。

Ehrm。向客戶端發送一個令牌,在每個後續請求中發送一個令牌,僅從服務器端的數據庫中檢索與該令牌相關的信息? 這就是所謂的會話。這正是PHP會話所做的,除了將信息存儲在文件而不是數據庫之外。您正在重新創建會話。

無論如何,我認爲「沒有會議,沒有國家」的口頭禪被高估了,不太實際。我認爲存儲一個包含令牌的簡單cookie是非常不錯的,因此您可以識別用戶並將(某些)數據與該用戶關聯起來。無論如何,我認爲不存儲應用程序狀態(例如,用戶以前做過什麼,以及他現在在做什麼)是最重要的。

0

或者您可以將所有內容都加密爲令牌,並且每個請求都可以從該令牌獲取所有用戶信息,包括名稱,時間戳等。

服務器需要知道的唯一事情就是編碼/解碼算法。

更好的是,服務器可以調用認證服務(可以是完全獨立的盒子)來認證和授權用戶。

簡單永遠不錯!

相關問題