2016-01-21 67 views
1

我有網頁開發的背景,但我對移動世界非常陌生。所以,我不知道如何處理這種情況繼續:服務器是否保存移動請求的會話?

  • 在應用
  • 用戶的登錄憑據通過POST請求發送到服務器。
  • 如果響應正常,它會重定向到主要活動。

現在,我想知道是否必須保留用戶的ID。我知道,當我們使用瀏覽器時,服務器會保存一個「會話」,這樣客戶端就不需要每次發送ID來請求數據。移動應用(Android)也是如此嗎?順便說一下,我還負責構建REST API,但沒有任何針對移動設備的經驗。

回答

2

要回答的一個大問題,它取決於並不確定您正在使用哪種服務器技術。但是我可以描述一種我實現的方法(.Net背景)。

看來你正在編寫一個移動應用程序?

移動應用程序首先會通過https將身份驗證和密碼傳遞給您的登錄API。通常情況下,網址會像

// yourwebsite /帳號/令牌

您的API將驗證用戶時,如果OK,問題的承載令牌。

移動應用程序需要記住此令牌,並在隨後的調用中將其傳遞到請求標頭中。這就是服務器如何知道這是誰。您不需要再發送用戶標識和密碼。而且可能有一個強大的安全性參數,根本不在移動設備上存儲用戶標識和密碼。

現在,您的服務器代碼將驗證令牌,並且您將知道用戶可以執行的操作。令牌通常會過期,因此任何移動客戶端都需要檢查並重新進行身份驗證才能獲得新的令牌。

但是服務器如何知道它所屬的這個令牌?

在MVC世界中,例如,有框架代碼可以幫助您。有很多MVC模板代碼。如果您碰巧正在開發.Net api服務,請參閱此http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api

如果您在服務器上不是.Net,我確信會有其他東西來幫助您沿着相同的主體。

至於開發RESTful API,ServiceStack是值得考慮的。如果太貴,至少要考慮他們的方法並推出自己的方法(尤其是當涉及到api的版本化時)。

+0

我必須在服務器端使用PHP,但主要的疑問是用令牌解釋來回答的。謝謝。 –

2

您誤解了瀏覽器的情況,因此您的結論是有缺陷的。讓我解釋一下:當您使用網絡瀏覽器登錄網站時,確實會保存一個會話,但不僅僅是在服務器上。它也保存在客戶端。無論何時您從服務器發送請求到服務器,您都必須發送存儲的信息(稱爲Cookie)來標識您自己。

讓我們更深入地思考一下:服務器如何將您的會話標識爲會話而無需獲取cookie?按IP地址?不,IP地址可以被許多人使用,它可能會改變。通過瀏覽器會話?是的,通過瀏覽器會話,其中也包括cookie。

既然您明白會話是由服務器和客戶端保存的,那麼您肯定已經知道您對移動應用程序也需要相同的功能。客戶端登錄,因此爲客戶端生成一個cookie。這應該很難猜測。從那裏開始,客戶端使用爲其創建的cookie使用服務器。

如果你不相信我的話,請訪問一個網站,您還沒有登錄,然後運行console.log(document.cookie);,登錄,然後再次運行console.log(document.cookie),然後註銷和d再次運行console.log(document.cookie)

+0

是的,我沒有意識到瀏覽器幕後發生的事情,所以我不知道它必須由應用程序執行_manually_。 –

相關問題