簡體   English   中英

REST API-無狀態方式的用戶會話管理

[英]REST API - User session Management in a stateless way

對於您中的許多人來說,這可能是微不足道的事情,但是我對理解用例的正確流程並沒有任何運氣。 我正在為我們的移動應用程序(IOS和Android)構建API,並且像大多數Web應用程序一樣,該API具有某些功能/頁面(就網站而言),僅登錄用戶才能訪問。 由於通常不鼓勵在API構造中使用會話,因此我想知道如何在API中跟蹤此類事件。 我的問題是,我該如何識別:

  1. 用戶從客戶端登錄。 因此,當用戶通過發送其用戶名和密碼登錄時,服務器端會在從數據庫進行驗證后授權該用戶。 在這一點上,我應該向客戶發送什么,它需要隨我一起發送每個請求以供將來識別?
  2. 確保我正在收到對真實用戶的請求...例如,用戶A不能要求用戶B的信息。 換句話說,我的想法是,如果我基於UserID(或某些令牌,因為它也必須進行某種加密)來做事,那么有人可以以某種方式破壞我的安全性並要求提供其他用戶ID的內容...如何我能確保嗎?

本質上,我正在尋找一些指導以無狀態方式維護狀態。

成功驗證用戶身份后,嘗試發送session_id。 這可能是通過user_name的md5哈希值(由當前時間戳記)創建的。

在服務器端,您可以創建一個表session_data(session_id,user_id,last_access_time,session_data),該表會將session_id映射到用戶。 在last_access_time過時之后,會話將變得過時。

這種方法不適用於激烈的用戶交互,因為您必須在每次請求后更新session_data。

在這種情況下,此類表可以移動到任何快速存儲中。

API開發中沒有登錄狀態等概念。這就是為什么它是無狀態的。 您必須對每個請求進行身份驗證(因此,請在每個請求中發送用戶名和密碼)。

注意:您可以進行會話,但是它由REST客戶端維護,因此API對此一無所知。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM