2016-06-16 62 views
1

因此,我們目前正在考慮構建一個網站,該網站利用Web API進行所有身份驗證和與數據庫的通信。我們目前不確定的是如何通過Web API進行身份驗證來堅持用戶在我們的MVC應用程序中。如何將用戶從MVC應用程序持久化並驗證到Web API

這發生在MVC端的事情上,我們應該如何使用Web API進行身份驗證?

編輯:我想知道的另一件事是,如果我們可以調用API來獲取身份用戶後,他們進行身份驗證和實例身份用戶的事物的MVC端,只是將它們存儲在會話變量堅持我們的應用程序。這將是可行的,並且任何想法是什麼樣子?

回答

3

MVC利用會話進行身份驗證。一個cookie被髮送給用戶,並且Web瀏覽器將該cookie與每個請求一起發回,以使服務器能夠恢復會話並將用戶識別爲已認證。

Web API是基於REST的,並且是無狀態。沒有會話,cookies等概念。每個Web Api請求都必須在請求中進行身份驗證,通常通過傳遞帶有不記名令牌或類似標記的Authorization標頭。

如果MVC應用程序利用Web Api進行身份驗證,那麼Web API應該返回一個身份驗證令牌給MVC應用程序。然後,MVC應用程序應該通過設置正常的身份驗證cookie來「登錄」用戶並保存該令牌,以便它可以使用該身份驗證未來的Web Api請求。換句話說,MVC應用程序仍然像通常那樣處理授權。唯一的區別是Web Api的響應決定它是否認爲用戶名/密碼組合是正確的,而不是直接進行數據庫查詢。

+0

我會補充說,對WebAPI後端所做的所有請求都應該進行身份驗證(該令牌應該在授權標頭中傳遞並進行檢查)。僅僅處理MVC方面的身份驗證/授權是不夠的,因爲任何試圖惡意破壞系統的人都會直接攻擊你的WepAPI,他們將不會使用你的MVC客戶端來這樣做。 –

+0

在我的回答中,我說:「保存令牌,以便它可以驗證未來的Web Api請求」。但是,如果這還不夠明確,是的。 –

相關問題