2011-09-09 17 views
7

我打算構建一個包含2個部分的系統: 1. PHP網站(CakePHP)。 2.移動應用程序(Android & iPhone)。Android應用程序的身份驗證模型

用戶必須與USR & PWD用我的系統(網絡和移動應用程序)登錄。但是我沒有很多用戶身份驗證的經驗。我應該存儲什麼:usr & pwd,令牌字符串。我想爲我的系統(Web和移動應用程序)找到一個「用戶身份驗證模型」。

有沒有人有關於用戶認證的經驗。任何人都知道如何實現這一點?任何示例代碼?幫我PLZ :)

回答

13

這是我們爲我們的應用程序一樣,

  1. 首先我們發送一個用戶名和密碼,從我們的應用程序的服務器。

  2. 在服務器上,他們進行認證的憑證,並返回其是請求令牌和sucess標誌的組合的響應。

  3. 在我們的應用中,我們檢查成功標誌。如果它設置爲true,我們保存請求令牌並將其用於所有下一個向服務器發出的請求。

  4. 現在,當服務器收到請求,它會檢查數據庫,看看用戶是否有此令牌。 如果有,它會檢查最後一次請求的時間(這是爲了處理用戶登錄超時的情況)。如果當前時間和最後一次請求時間之間的差異大於您設置的限制,則您將響應應用程序需要重新登錄請求來生成新令牌。否則,您繼續請求並回復結果。

    這就是我的工作場所的服務器端人員如何做到這一點。我在客戶端工作。但這基本上是做了什麼。

編輯:關於令牌。 它基本上是一個隨機生成器方法生成的32個字符的字符串。因此,當用戶發送登錄請求並且登錄成功時,我們使用生成器方法創建一個令牌,並將其作爲用戶請求令牌以及當前時間和日期存儲到我們的服務器數據庫中。

所以當用戶發送另一個請求到ther服務器時,我們首先獲取令牌並檢查用戶是否存在該令牌。如果有,那麼下一個檢查是看看這是否是一些舊的請求令牌。所以我們用保存在數據庫中的時間來檢查當前時間。如果請求在限制之前發送(例如5分鐘),則我們用當前時間更新數據庫中的最後一個請求時間,並將結果返回給客戶端。

使用此方法,您可以通過檢查令牌和上次請求時間來爲每個請求執行身份驗證。

假設您希望您的應用程序在所有時間都登錄,直到用戶明確註銷爲止。在這種情況下,您不需要檢查每個請求時間。您只需將請求令牌保存在客戶端設備上。當用戶註銷時,從客戶端刪除令牌。所以他將被要求下次登錄,因爲他沒有令牌。在這種情況下,保存客戶端設備上的請求令牌比保存用戶名和密碼要安全得多。

這裏有很多函數用於生成隨機令牌。

+0

感謝您的幫助:) 您是否有其他選擇用戶認證模式?我想知道所有選項:) –

+0

這就是我們通常所做的。那麼也許別人會回答其他選擇。身份驗證系統根據需求不斷髮展 – blessenm

+0

您能否幫助我瞭解一下令牌如何工作?每次用戶登錄時,是否需要在服務器端生成令牌? –

相關問題