在我的mvc"你好世界"的第一次运行中,我得到了几个按钮; 回家,关于并登录.如果我在登录时创建用户帐户,那么数据存储在哪里?它是否足够安全,可以在开发我的应用程序时保留它,或者它应该转到数据库(如果它还没有)?
谢谢你的时间.
jos*_*rry 15
ASP.Net MVC和WebForms共享许多相同的组件,包括成员资格存储,身份验证和授权.这些组件用于互联网上的数千个公共站点.
籍
默认的ASP.Net MVC模板使用与WebForms 相同的SqlMembershipProvider来存储成员资格信息.如果你查看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>
Run Code Online (Sandbox Code Playgroud)
它引用了ApplicationServices您在配置文件顶部定义的名称连接字符串:
<connectionStrings>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
这将使用本地安装的Microsoft Sql Server Express实例安装aspnet.mdf在应用程序App_Data目录中找到的文件.
通过将MDB文件复制到SQL Server,装入它并更新连接字符串,可以轻松地将其升级为完整的SQL Server.
认证
身份验证再次由用于WebForms 的相同FormsAuthentication类处理,它也在Web配置文件中配置:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
授权
默认模板还具有SqlRoleProvider和WindowsTokenRoleProvider的配置条目,可用于分别从数据库或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>
Run Code Online (Sandbox Code Playgroud)
角色默认情况下禁用,可以通过改变启用角色支持enabled的属性roleManager从元素false到true.
配置角色后,您可以使用ASP.Net授权元素来控制对站点资源的访问.您还可以在控制器和/或操作上使用授权属性,以实现更细粒度的访问控制.你不具备使用角色进行授权,用户名,工作得很好,但这样做会使授权的管理变得更加容易.
安全
所有这些模块都是使用业界公认的安全最佳实践编写的.身份验证由IIS处理,IIS可以使用Digest或Windows Integrated身份验证,两种安全方法; 由于浏览器支持,您自己编写的任何内容也仅限于这些方法.
密码存储在数据库中,使用盐进行暴力攻击,使用诸如彩虹表之类的方法更加困难.提供商还支持密码复杂性和开箱即用的到期.
身份验证令牌使用计算机专用密钥进行安全加密,并使用MAC签名以确保它们未被篡改,然后才将它们存储在客户端cookie中.
可测性
尽管安全性非常标准,但MVC支持者强调的一个重点是这些组件并不简单,正在进行测试.然而,这个问题可以通过一些策略性放置的接口,几个外观类和一些依赖注入(现在默认支持MVC3)来解决.
是的,它存储在数据库中。数据库位于App_Code名称为的文件夹中ASPNETDB.MDF中。您可以在您的文件中配置它web.config。
安全吗?嗯,恕我直言,确实如此。但我真的不喜欢这种方法,我更喜欢设计自己的身份验证服务并完全控制它。如果您打算坚持使用此方法,您应该阅读有关ASP.NET Membership Provider with Forms Authentication的更多信息。
| 归档时间: |
|
| 查看次数: |
11649 次 |
| 最近记录: |