2014-01-30 52 views
0

我正在使用標準MVC 5身份會員資格,因此用戶可以通過身份驗證使用我網站上的功能。除了登錄和註冊之外,所有操作都需要有人登錄。使用PhoneGap授權使用MVC身份的用戶

我想使用PhoneGap將我的手機準備好的html轉換爲移動應用程序。我打算使用ajax來執行所有對我的操作的調用。

我該如何處理不在同一臺服務器上的html頁面?我如何登錄某人,然後讓他們撥打電話?

+0

你可以使用WebApi –

+0

你能找到/顯示如何使用WebApi來做到這一點的例子嗎?我假設你可以做一些事情,比如創建一個cookie,並將該cookie用於隨後的調用? – MichaelMcCabe

回答

1

使用新的MVC 5身份成員身份從移動設備驗證用戶非常簡單。實質上,從設備發送到服務器的每個HTTP請求都將包含一個不記名令牌來授權該請求。 當您的Web API方法接收到請求時,它將通過不記名令牌識別用戶進行請求。這使您可以在Web API控制器中使用標準Authorize屬性,我確信您習慣在MVC控制器中使用它。這是一個basic example這個過程,但本質上是這樣的:

  1. 請求包含用戶名和密碼是對您的服務器。
  2. 服務器驗證用戶名/密碼,併發送回一個承載令牌
  3. 另一個請求(S)到你的服務器訪問數據或其他功能,並且包括在每個請求

承載令牌假設你'從移動設備上執行此操作,存儲令牌的一些選項是HTML5本地存儲,SQLLite等。沒有以這種方式進行「登錄」 - 只有對服務器的請求授權。當然,用戶並不知道,因此模擬典型的登錄體驗非常簡單。這裏有一個簡單的例子擴大在一個一個以上:

  1. 創建用戶名和密碼,登錄按鈕
  2. 用戶填寫出來領域標準的登錄屏幕,當他們點擊登錄你做一個AJAX調用到您的服務器,請求使用用戶輸入憑據的不記名令牌(應通過HTTPS)
  3. 服務器驗證憑據,並返回一個不記名令牌。從用戶的角度來看,他現在已經「登錄」了。

處理來自此處的不記名令牌的一種方法是將其存儲在SQLlite或本地存儲中,以便您可以隨時訪問幷包含對您製作的服務器的更多請求。您只需考慮到該令牌已過期(由您設置,請參閱我發佈的鏈接),並相應地設計您的應用。只要用戶使用應用程序,您只需將持票人標記保留在移動設備上,即可減少安全性。完成後,您將其從設備上的存儲設備中刪除,並且用戶在打開應用程序時必須再次進行身份驗證過程(即「登錄」)。

此外,這個視頻Securing .Net Web APIs絕對值得一看。

+0

感謝您的回答。你給我的鏈接不在Web Api項目的背後,所以大部分東西都沒有了。它的不記名令牌元素令我困惑,以及如何登錄以及如何處理隨後的請求(不知道如何存儲它,我如何發送等) – MichaelMcCabe

+0

@MichaelMcCabe請參閱我的編輯。除了如何存儲不記名令牌之外,我給你的鏈接向你解釋了所有這些。真的,請遵循該示例,它將向您展示如何使用OAuth令牌提供程序設置Web API項目,如何請求和獲取令牌,以及如何使用令牌來授權後續請求。你的帖子沒有包含代碼,我假設你想要一個概念性答案。如果您不確定如何通過代碼真正完成此任務,請發佈您迄今爲止的內容,並且可以使用它。 – rwisch45

+0

我可以只說謝謝你的詳細解答和幫助。讓我感到困惑的是「授權」的概念沒有登錄。你清除了這一點。從理論上講,現在我明白了,然而我在網上看到的每個例子都是針對WebApi應用程序或Single頁面的。 MVC應用程序缺乏與令牌等相關的所有內容。我想我可能不得不開始一個新的WebApi應用程序,並將我的內容遷移到該應用程序,除非有一種簡單的方法可以建議讓它在MVC應用程序? – MichaelMcCabe

相關問題