ASP.NET 5 (vNext) / Web API / OAuth / OpenID / Tokens / Cookies / 我真正需要什麼?
我有一個想要遷移到 ASP.NET 5 的現有項目。
目前它是一個簡單的 ASP.NET Web 窗體項目,它引用了 2 個 DLL:
- 包含所有業務邏輯的 Domain.dll
- 包含所有數據訪問程式碼的 Data.dll
通常我不應該碰那些目前工作正常的 2 個 DLL。現在我想用 2 個新組件替換 ASP.NET Web Forms 項目:
- 一個帶有angular2的前端SPA
- 使用 ASP.NET 5 (vNext) 的 Web API 後端
我一直在使用 VS2015 中可用的模板,我也一直在閱讀有關身份驗證的所有內容,我必須說,我現在對我真正需要什麼變得更加困惑…… :(
我的後端 API 中是否需要 MVC?所有的例子都是用 ASP.NET MVC 完成的,但是如果我有一個完全工作的 SPA 前端,難道我只需要一個簡單的 RESTful 服務嗎?
我需要什麼來進行身份驗證?我需要 ASP.NET 身份嗎?Identity 是舊會員的新版本嗎?它是否負責創建代幣?我已經有一個包含所有使用者和散列密碼的生產數據庫。My Domain.dll 程序集還具有驗證使用者憑據的所有必要程式碼。
如果我想允許 Google 或 Facebook 等其他登錄服務,我需要什麼?我已經使用 ASP.NET 4.5 和 ASP.NET 5 模板創建了一些 Web 應用程序,以了解事情是如何完成的,但這就是混亂變得更糟的地方。ASP.NET 4.5 模板使用 Owin 的東西(我不熟悉),而 ASP.NET 5 模板沒有。
理想情況下,這就是我真正想要的:我想創建一個依賴最少的 Web API 項目,我想避免使用會話和 cookie,我希望能夠使用 Google 和 Facebook 的服務用於登錄。
謝謝!
我會說……這聽起來像是完全重寫。
讓我們回顧一下你的觀點……
我的後端 API 中是否需要 MVC?
在
ASP.NET 5我們真的沒有 MVC 和 WebAPI 了。它們在概念上非常相似,並且已經合併。一切都與您返回的內容有關。如果您返回一個IActionResult,它將啟動 Razor 和 ViewEngines。如果您返回一個對象,那麼它將嘗試基於 HTTP 標頭(WebApi 所做的)序列化您的對象。難道我只需要一個簡單的 RESTful 服務嗎?
如果你有一個完整的 Angular 前端 SPA 應用程序?是的。這就是你所需要的,整個 MVC 的事情不是強制性的。您只需要創建一個 Web api。微軟有一個很好的教程在這裡如何做到這一點。
我需要什麼來進行身份驗證?
我強烈推薦 SSO。這減輕了自己重新實現身份驗證的需要。如果你更多的是一個公共應用程序,請嘗試支持 Facebook/Twitter/Google。如果它是一個業務應用程序,Azure AD可以完成這項工作,但在這一點上,它是特定於你的客戶所擁有的,所以……它可能不是最好的解決方案。
我需要 ASP.NET 身份嗎?
不,但對於 ASP.NET 5/MVC6,它是目前唯一存在的,所以目前?是的,但是整個 ASP.NET 系統在系統中的每個位置都可以替換。身份不使用舊的會員系統。它使用聲明,這是一個完全不同的主題。
Identity 將處理您對每個請求(令牌等)進行身份驗證所需的一切。好消息?它支持 Facebook、Google 和許多其他網站。
更多資訊在這裡
基本上,
ASP.NET 5它是一個將依賴注入作為一等公民的巨大管道。向管道添加元素使它們可供管道中的後續人員使用。此管道
Startup.cs在 2 個步驟中配置並分開。ConfigureServices這是配置依賴注入的位置以及Configure添加管道的實際元素的位置。想要替換預設記錄器?配置服務。想要在管道中添加元素?配置。真的是這樣!
推薦閱讀: