2012-01-06 67 views
1

我有這個需求,我需要在集羣環境中實現基於Java的RESTful Web服務。我的問題是我如何在這裏管理用戶會話。一旦用戶登錄,他應該能夠毫無問題地執行所有可用的操作,用戶也應該能夠爲他保留購物車。什麼是最好的方法呢?任何代碼示例要做到這一點?請注意主要因素有:集羣環境中基於Java的REST Web應用程序的會話管理

  1. 集羣環境中的REST風格的Web應用程序。
  2. 多個客戶端將用於此應用程序。 (如:安卓,蘋果,Web..etc)
  3. 用戶應該能夠保持一個購物車(不知道這是否違反了REST風格的概念)
  4. 奔跑到JBoss 6.0.0

回答

1

基於REST應用程序不使用會話,因此使用集羣環境應該沒有任何問題。 RESTful應用程序在每個請求上發送認證憑證。

+0

Darrel謝謝你的意思是我必須做一個額外的數據庫調用來驗證每個請求的用戶嗎?或者我應該生成某種類型的會話密鑰並保存在一張地圖中,以便每次請求我都可以輕鬆驗證用戶不用調用db? – bluelabel 2012-01-07 14:38:22

+0

@bluelabel如果您的標準身份驗證機制不夠快,無法完成每個請求,那麼您可以向客戶端提供一個令牌,以便在將來可以發送請求以更快地進行身份驗證。令牌是否具有加密到其中的用戶信息,或者是否到期等都是系統安全性和系統需要多快的因素。 – 2012-01-07 14:47:30

+0

Darrel謝謝,請您解釋一下我對這個令牌認證的更多信息,到目前爲止我所做的是,一旦用戶成功登錄,我手動創建一個令牌並將其與響應一起發送,任何來自此用戶的請求都會將此令牌包裹在其中。那麼我如何使用此令牌進行驗證?我真的不想爲每個請求進行數據庫調用來驗證用戶。您能否以我到目前爲止的方式幫助我? – bluelabel 2012-01-13 07:04:24

1

在RESTful Web服務中使用購物車沒有問題。只是購物車不會像一些典型的應用程序那樣與會話一起存儲。在這種情況下,你會希望有一個購物車資源:

/app/rest-api/shopping-carts/204314

所有設備都可以訪問這個資源,並看到相同的數據。由於Web服務器是無狀態的(購物車存儲在數據庫中),羣集不成問題。我不知道JBoss會做這些事情。我猜想沒有,因爲JBoss實現了Servlet規範中的所有功能(或者至少足以促進你在這裏需要的功能)。

在驗證用戶並將它們與購物車關聯方面,這是一個更大的話題,例如,你是否可以訪問OAuth提供程序?或者,你是否正在考慮OpenID路由?用戶身份驗證信息是否已存儲在應用程序的某個地方?這是什麼樣的?

+0

購物車數據也可以由客戶端維護。 – 2012-01-07 14:48:39

+0

感謝彌敦道,好的認證似乎是我現在面臨的主要問題。由於這個應用程序應該提供用戶登錄或使用他們自己的帳戶爲這個應用程序創建或使用那裏面對帳戶帳戶。如果選擇Facebook,則應通過我的Java服務器進行身份驗證。我不明白的是,如果用戶使用其中的任何一種,我如何驗證他在羣集環境中登錄以外的每個請求?正如達雷爾建議的那樣,我是否應該爲每個請求認證用戶?我有什麼選擇呢? – bluelabel 2012-01-08 02:35:48

+0

@達勒爾米勒 - 是的,購物車可以由客戶維護。如果客戶希望每個用戶的所有設備都顯示相同的購物車,或者購物車內容的報告很重要(哪些商品進入購物車而不被購買?),則客戶無法維護購物車。 )。顯然這是如何設計的權衡。 – Nathan 2012-01-09 04:48:55

相關問題