2014-12-23 129 views
0

我有一個全新的MVC5項目,我需要用戶管理。當我創建一個新項目時,Visual Studio會爲我添加大量的代碼,以便我可以利用身份驗證和授權的概念。ASP.NET身份或ASP.NET成員身份?

問題:ASP.NET身份是Web應用程序之外用戶管理的「好」解決方案嗎?我希望有一天可以爲混合添加移動應用程序,並且我希望將相同的BLL代碼庫用於Web應用程序和移動應用程序。

另外,我對ASP.NET身份的理解很有限,它在後臺使用HttpContext來「連接」身份驗證和授權。因此,我可以使用我的控制器操作(如[Authorize])上的屬性來繼承授權行爲。我非常喜歡這個功能,但我擔心這種方法不適用於移動應用,因爲HttpContext未被使用。

這裏需要注意的一點是,我也不喜歡我在我的MVC項目中使用DBContext直接使用IdentityConfig.cs類。我一直在使用n層方法擺弄,但我似乎無法成功地將auth/auth部分分解爲適當的BLL/DAL體系結構模型。

所以,我想我在所有兩個問題:

  1. 是ASP.NET身份「好」的認證/身份驗證兩種網絡&移動應用選擇

  2. 如果「是」 ,我如何才能將RoleManager/UserManager類拆分爲BLL並讓它們利用數據訪問層?

回答

2

1)是的,如果您打算以後再構建移動應用程序,請務必進行ASP.Net Identity 2身份驗證。檢查出this post瞭解更多關於ASP.Net身份2.

我最終使用ASP.Net身份2 OAuth身份驗證爲我的webapi項目,也是爲迎合移動應用程序。沒有必要擔心Httpcontext。您需要在客戶端(無論是Web應用程序還是移動應用程序)跟蹤的所有內容都是OAuth發佈的access_token。

2)是的。 ASP.Net Identity 2非常靈活,它甚至允許您使用其他數據庫引擎(如MySQL)來存儲用戶/角色信息。 Check this out。我將所有定製的OWIN特定表放入不同的BLL中,並將其插入WebAPI項目中。兩者都通過接口鏈接,因爲DAL駐留在不同的項目中。將它與一個偉大的DI框架(如StructureMap/Ninject/SimpleInjector)結合在一起,您不必擔心DbContext會與您的架構模型混淆。