6

我從5歲與ASP.NET Web窗體經驗管理用戶的內容,我是新來的ASP.NET MVC。我現在試圖通過一些教程,視頻教程和書籍學習MVC。
我正在使用Visual Studio 2012和全新的ASP.NET MVC 4構建一個小型Web應用程序來管理我的共同基金投資組合。這應該讓我進入新的模式,並學習很多新的東西...
我的應用程序還應該讓其他一些朋友也這樣做。所以它必須管理不同用戶的投資組合
我已經用Entity Framework Code First構建了一個小數據庫,所以我有一些基本模型:基金,投資組合,分享,存款,來源和用戶。一個用戶可以擁有許多其中包含許多基金的投資組合。每個用戶都有自己的存款清單。每隻基金都有很多股份價值(每天一次)。
Source模型只是一個表格,我爲每個網站來源提供了一個特定基金份額數據的網址。所以,一個基金有很多來源。然後,我使用刮板類從這些網站獲取數據,每天一次。
這是應用程序的主要結構。現在,我需要知道什麼是最好的方法:ASP.NET MVC如何使用ASP.NET成員資格提供

1)管理用戶的帳戶
我應該將ASP.NET Membership DB結構集成到我的數據庫中,並使用它來代替我的自定義用戶表來管理用戶?

2)管理用戶的內容:投資組合,基金等
什麼是MVC模式的最簡單優雅的方式,來實現認證和所有授權驗證,以使用戶獲得他自己的數據?我是否需要在每個控制器的每個動作中檢查此內容?

因此,換句話說,我怎麼要執行我的控制器?例如:

[Authorize] 
public class PortfolioController : Controller 
{ 
    private FundMonitorContext db = new FundMonitorContext(); 

    public ActionResult Index() 
    { 
     // Check user ID and give back to the view only his portfolios... 

     var portfolio = db.Portfolios.List(); 
     return View(portfolio.ToList()); 
    } 

    ... 

    public ActionResult Details(int id = 0) 
    { 
     ... 
    } 

    //Other actions... 
} 

我真的很感激每一個建議!

+1

結帳simplemembershipprovider http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web -forms-and-asp-net-mvc-4-templates.aspx,它是微軟提供的更加靈活的會員供應商版本 –

+0

非常有趣。我會試一試...我也是ASP.NET成員資格提供者的新手,因爲我使用Oracle DB和自定義用戶和配置文件表開發了大部分應用程序。 –

回答

0
  1. 這是您必須自己做的選擇,但我喜歡創建自己的會員供應商,並不那麼難。通過您自己的提供商,您可以以自己的方式實現,而不像10年前微軟認爲的那樣。例如:http://www.codeproject.com/Articles/165159/Custom-Membership-Providers
    在.NET 4.5中,使用SimpleMembershipProvider創建自己的提供者會更容易。

  2. 隨着[授權]屬性你告訴只有autorized用戶將被接受的控制器。當用戶登錄時,您可以將用戶名/用戶名放入FormsAuthentication cookie中,這樣您可以非常容易地獲取用戶名/用戶名。如果您想在其中放入更多數據,您還可以在Cookie中創建Authtication ticks。

    爲了更容易測試,我幾乎不建議在HttpContext.User和IPrincipal之間創建一個綁定,http://www.hanselman.com/blog/IPrincipalUserModelBinderInASPNETMVCForEasierTesting.aspx

+0

我已經閱讀了關於自定義成員資格提供程序的實現的一些內容,但我認爲我的實現與ASP.NET集成提供程序沒有太大區別......也許我會更改舊SHA1默認的散列函數,並使用更可靠的SHA256或SHA512。在我的場景中,這可能還有其他優勢? –

+0

我想你會在你的數據庫中得到很多你不會使用的實體。而最大的損失是你無法進行任何配置,但另一方面,如果你已經有了一些可以使用的東西,那麼你可以節省一些時間。但是如果你認爲標準提供商會滿足你的需求,爲什麼不使用它。 – Rikard

相關問題