用户数据存储在随asp.net mvc框架附带的帐户系统中的位置在哪里?

问题描述:

在我的mvc“hello world”的第一次运行中,我得到了几个按钮;家,关于和登录。如果我在登录时创建用户帐户,那么数据存储在哪里?是否足够安全,以便在开发我的应用程序的时候保持原样,还是应该将其发送到数据库(如果还没有的话)?用户数据存储在随asp.net mvc框架附带的帐户系统中的位置在哪里?

谢谢你的时间。

是的,它存储在数据库中。数据库位于名称为ASPNETDB.MDFApp_Code文件夹中。您可以在您的web.config文件中对其进行配置。

安全吗?那么,恕我直言,这是。但我真的不喜欢这种方法,我更喜欢设计自己的身份验证服务并完全控制它。如果你要坚持这种方法,你应该阅读更多关于ASP.NET Membership Provider with Forms Authentication

如果您创建一个默认的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

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中默认支持)来简单地解决。

数据库是由asp.net通过代码创建的。此功能使用asp.net构建成员身份功能。你先看看它:http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

并且还要看模型文件夹,你会在那里看到帐号模型。并查看控制器文件夹。在那里,你将帐户控制器。检查代码,你会发现它。

我正在回答下一个逻辑步骤:好的,所以我知道它在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 ...
  • 浏览您的中密度文件