2017-01-31 121 views
0

目前,我已經使用身份框架創建了WebAPI項目,並且在使用API​​進行身份驗證時設置了令牌。使用Web API令牌對MVC客戶端進行身份驗證

所以現在我正在創建一個獨立的MVC應用程序,它允許用戶調用WebAPI來獲取後端數據。

目標是分離功能,以便其他應用程序也可以開始通過Web調用與後端數據進行交互。

因此,現在的困惑是如何設置我的MVC項目,以便我可以使用從WebAPI接收到的令牌在控制器上使用授權屬性。我想我需要在Startup.Auth.cs中的ConfigureAuth方法中啓用承載令牌。但是,這足夠嗎?或者我還需要啓用cookie身份驗證?

回答

1

MVC和Web Api在認證方面有着根本的不同。使用Web Api時,必須在請求的頭部設置不記名令牌,但這不是問題,因爲所有API請求都是由客戶端以編程方式完成的,也就是說,在設置客戶端以驗證請求時涉及人爲干預正常。

MVC是一種不同的野獸,因爲動作通常通過網絡瀏覽器訪問,而瀏覽器不會自動將承載令牌附加到請求頭。 做的是將由服務器設置的cookie傳遞迴服務器。這就是爲什麼Cookie身份驗證最常用於MVC Web應用程序的原因。

您應該做的是爲MVC網站啓用Cookie認證,然後設置您的登錄操作以通過Web Api進行認證。當您從Web Api獲取有效的身份驗證時,您可以通過Identity API手動登錄用戶:

await SignInManager.SignInAsync(user); 
+0

好的很有意義。那麼,爲了利用授權屬性,只需要在同一個cookie中登錄後請求和存儲聲明和角色? – foop

+0

本質上,是的。 –

+0

我還必須創建ApplicationSignInManager實例的一個新實例,ApplicationUserManager?但我不想創建一個DbContext的新實例,因爲我不想直接與Identity Db進行通信。只能通過API調用。 – foop

相關問題