簡體   English   中英

Web應用程序和本機應用程序的身份驗證

[英]Authentication for both web application and native app

我們有一個可以通過瀏覽器訪問的Web應用程序,現在我們為該應用程序創建一個android應用程序,然后它們應該共享相同的后端。

對於認證,一般的瀏覽器會(或可能)保存在cookie中的用戶信息,並發送cookie到服務器與每個 HTTP(S)請求到服務器,然后服務器會相應地把東西在頁面中。

現在,對於Android中的應用程序,我不確定如何制作。 我並不是說如何將身份驗證請求發送到服務器,對於這個問題,我可以參考這篇文章

我感到困惑的是,一旦我將用戶ID和密碼發送到服務器並獲得成功的響應,下一個請求又如何呢? 我應該像瀏覽器一樣將經過身份驗證的用戶信息綁定到對服務器的每個請求,還是僅將諸如authenticated=true|false類的標志保存到首選項?

我希望有人能提供一些建議。


也許我不夠清楚。 我將舉一個例子。

假設我有一個Web應用程序,該應用程序具有一個名為“ followers.jsp”的頁面,該頁面將顯示當前已簽名用戶的關注者。 通常,我們將通過身份驗證從數據庫中獲取關注者,然后將其彈出到頁面中,如下所示:

followers.jsp:

User u=Session.get("user");
if(u==null){
  //no authenticated redirect to login page 
}else{
  List followersList=getFollowers(u);
  requset.setAttribute("followers",followersList);
}

然后直接呈現jsp頁面。

現在我們創建一個Android應用程序為我們的產品,那么當用戶使用我們的應用程序,他會登錄並看到他的追隨者,在這個時候,我們必須創建一個Web服務,這將做認證 ,並返回數據,然后應用程序會渲染它們。 Web服務可能看起來像這樣:

api / getFollowers.xx

User u= // here we must get something to identify a user from the request information maybe a token or something else? 
List followersList=getFollowers(u);
return toJson(followersList);

而現在我們發現了我們的“followers.jsp”頁面,我們的服務將做同樣的工作(認證,讀取數據庫,返回數據后),那么為什么不都使用Web服務,因為我們可以使用Ajax這將獲得更好的用戶體驗,以便在“ followers.jsp”處獲取和呈現數據?

如果是這樣,如何為PC和Android客戶端建立統一的身份驗證機制?

如果網站要求對每個請求進行身份驗證,則您需要發送身份驗證數據。 如果沒有,那么我首先看不到從Web或android進行身份驗證的意義,因為任何人都可以在沒有任何憑據的情況下發送請求並獲得響應。 如果您不想每次都發送密碼,則可以創建並發送一個臨時身份驗證令牌,盡管這需要對Web服務進行一些更改。

暫無
暫無

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

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