2011-02-22 17 views

回答

4

是的,它存儲在數據庫中。數據庫位於名稱爲ASPNETDB.MDFApp_Code文件夾中。您可以在您的web.config文件中對其進行配置。

安全嗎?那麼,恕我直言,這是。但我真的不喜歡這種方法,我更喜歡設計自己的身份驗證服務並完全控制它。如果你要堅持這種方法,你應該閱讀更多關於ASP.NET Membership Provider with Forms Authentication

1

如果您創建一個默認的ASP.NET MVC 3應用程序,並期待INT的web.config中,你會看到:

<add name="ApplicationServices" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
    providerName="System.Data.SqlClient" /> 

而且

<membership> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" 
     enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
     applicationName="/" /> 
    </providers> 
</membership> 

這似乎嘗試連接到本地SQL Server Express實例並從應用程序數據文件夾加載aspnetdb.mdfmembership.providers鍵然後引用System.Web.Security.SqlMembershipProvider,並引用ApplicationServices連接。

+1

這是什麼與-1?我是第一個發佈web.config引用的人,這和其他人給出的答案是一樣的。 – 2011-02-22 18:08:23

11

ASP.Net MVC和WebForms共享許多相同的組件,包括成員資格存儲,認證,授權。這些組件在互聯網上的數千個公共站點上使用。

會員

默認ASP.Net MVC模板使用相同SqlMembershipProvider作爲WebForms的存儲會員信息。如果您查看web.config文件,您會看到<membership/>元素下的配置部分,它看起來像這樣;

<membership> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" 
     enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
     applicationName="/" /> 
    </providers> 
</membership> 

它引用名爲ApplicationServices連接字符串,你會在配置文件的頂部找到定義:

<connectionStrings> 
    <add name="ApplicationServices" 
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

此安裝使用本地安裝的應用程序的App_Data目錄中找到的aspnet.mdf文件Microsoft Sql Server Express實例。

通過將MDB文件複製到SQL Server,裝載它並更新連接字符串,您可以輕鬆地將其升級爲完整的SQL Server。

認證

認證再次被用於WebForms的相同FormsAuthentication類處理,它也是一個在網絡配置文件配置:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 

授權

默認模板還具有用於SqlRoleProviderWindowsTokenRoleProvider的配置條目h可以分別用於從數據庫或ActiveDirectory中爲用戶存儲和檢索角色。角色管理器在<roleManager/>元素中配置。

<roleManager enabled="false"> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> 
    </providers> 
</roleManager> 

角色默認情況下禁用,可以通過改變從falseroleManager元素的enabled屬性true啓用角色的支持。

配置角色後,您可以使用ASP.Net authorization元素來控制對您網站資源的訪問。您也可以在您的控制器上使用Authorize attributes和/或採取更細緻的訪問控制措施。你不要使用角色進行授權,用戶名工作得很好,但這樣做會使授權管理變得更容易。

安全

所有這些模塊採用業界都寫的公認安全的最佳做法。身份驗證由IIS處理,可以使用Digest或Windows集成身份驗證兩種安全方法;由於瀏覽器的支持,你自己寫的任何東西都會被限制在這些方法中。

將密碼存儲在數據庫中的散列數據庫中,使用彩虹表等方法制作暴力攻擊更加困難。提供商還支持密碼複雜性和開箱即用期限。

身份驗證令牌使用機器特定的密鑰安全加密,並使用MAC進行簽名以確保它們未被篡改,然後纔將其存儲在客戶端cookie中。

可測

即使安全性是相當標準,一個是強調MVC支持者鼓勵這些部件不作簡單的,就是測試。然而,這個問題可以通過一些戰略性的接口,一些Facade類以及一些依賴注入(現在在MVC3中默認支持)來簡單地解決。

-1

數據庫是由asp.net通過代碼創建的。此功能使用asp.net構建成員身份功能。你先看看它:http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

並且還要看模型文件夾,你會在那裏看到帳號模型。並查看控制器文件夾。在那裏,你將帳戶控制器。檢查代碼,你會發現它。

3

我正在回答下一個邏輯步驟:好的,所以我知道它在ASPNETDB.MDF中,所以如何瀏覽表? (至少這是下一個合乎邏輯的問題)

這裏是一個很好的鏈接:http://learningsqlserver.wordpress.com/2011/02/13/how-can-i-open-mdf-and-ldf-files-in-sql-server-attach-tutorial-troublshooting/

本質:

  • 運行SQL Server Management Studio中(菜單快捷鍵「微軟SQL 服務器下####「)
  • 將對象瀏覽器連接到您的SQLEXPRESS服務器
  • 右鍵單擊數據庫並選擇A ttach ...
  • 瀏覽您的中密度文件
相關問題