7

我已經使用ASP.net MVC好幾年了。過去開發的大多數應用程序都是通過舊版Web應用程序的鏈接訪問的。當用戶到達我的某個應用程序時,我的應用程序會簡單地從瀏覽器讀取一個cookie,表明用戶已被舊應用程序認證。如何在今天的ASP.net MVC 4中進行授權?

現在,我終於正在研究一種全新的Web應用程序,它需要能夠執行身份驗證和授權。我確信我可以做一些工作,但我想知道今天的最佳做法是什麼。

從ASP.net WebForms,我熟悉MembershipProvider和RoleProvider類。我對Windows Identity Foundatioin(WIF)也有一點熟悉。

但是,當我查看默認的ASP.net MVC 4應用程序時,「AccountController」類使用了一個名爲WebSecurity類的東西。我想知道這是否意味着貶低MembershipProvider和RoleProvider類。

這應該是一個基本的設置,使用其他服務器提供的用戶名/密碼認證以及對特權資源的基於角色的訪問。

今天在ASP.net MVC 4中實現這些最佳做法是什麼?

+0

也許我應該補充我不負責設置HTTPS,SSL和其他所有內容;只是授權用戶在應用程序上使用功能。 –

+0

一切都在這篇文章 - http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5 -web-表單和-ASP淨MVC -4- templates.aspx – EkoostikMartin

回答

4

認證已經通量過去幾年並在Visual Studio 2013中企穩稱爲ASP.NET身份的東西,它提供了基於身份的身份識別方法。不過,這仍處於測試階段,尚未公佈。

在VS2010或2012(.net 4或4.5)中的MVC4中,默認模板基於Webmatrix Web Pages技術WebSecurity類,後者又基於SimpleMembershipProvider,該SimpleMembershipProvider本身基於MembershipProvider。

讓我再說一遍。 WebSecurity使用MembershipProvider,但許多新功能只能通過將提供者投遞到ExtendedMembershipProvider或使用WebSecurity API來使用。

您仍然可以使用在ASP.NET或MVC3中使用的舊SqlMembershipProvider,或MS發佈的任何其他提供程序(例如Universal Providers)。

這裏的關鍵是,所有這些(ASP.NET身份除外)都基於Membership,並且它們都在某個級別插入到Membership API中。

然而,成員資格實際上僅僅是提供用戶數據庫和驗證憑證的能力。除了登錄之外,它與驗證網頁或授權網頁沒有多大關係。這是FormsAuthentication或WindowsAuthentication(或其他)進來的地方,它們提供了IIdentity和IPrincipal的實現,它們是構建ASP.NET(和MVC)身份驗證的基本構建塊。

當您使用FormsAuthentication時,它基本上只是一個IIdentity實現。當你使用RoleProvider時,它基本上只是一個IPrincipal實現。

這些提供的工具在MVC使用授權屬性來控制訪問的網頁,並提供使用User.IsInRole()方法來確定用戶是在角色的能力。