我正在一个.NET MVC 3的剃刀网站上工作,我想知道在使用Membership.CreateUser时数据在哪里持久化?
Onhttp://msdn.microsoft.com/en-us/library/d8t4h2es.aspx上面写着:
CreateUser将新用户添加到数据存储,并为新创建的用户返回MembershipUser对象。
那是哪个数据存储?应用程序数据中的本地.sdf文件没有任何用户凭据表?
也可以提供一些很好的链接来帮助我理解.NET MVC3安全模型。
默认情况下,它使用App_Data中的存储,创建ASPNETDB.mdf文件,至少在web表单中是这样。MVC的行为是一样的,只是自动创建DB部分。您可以使用aspnet_regiis工具在任何SQL数据库中生成所需的表,或者滚动您自己的提供程序,并像在web表单中那样更新<system.web><membership>
元素中的成员资格注册。。
您需要设置一个成员数据库。
如果这不存在,你可以按照这个博客上的步骤手动完成
您需要运行aspnet_regsql.exe
实用程序并按照向导中的步骤进行操作。这将创建您需要的各种表。
MSDN 中的更多信息
ASP.NET成员身份为您提供了一种内置的方法来验证和存储用户凭据。
默认提供程序将成员身份信息存储在Microsoft SQL Server数据库中。
在设置您的成员资格提供程序时,您将运行regsql命令,该命令将在您的数据存储(无论您使用什么存储)中创建架构,并将连接字符串放入web.config中。您可以使用.Net提供程序的任何数据存储(ORACLE、MYSql、SQLite、SQL Server、MS Access等)。
据我所知,ASP.NET MVC 1.0和2.0中捆绑的安全模型是基于ASP.NET Membership API的,因此ASP.NET MVC本身没有特殊的安全API。它基于现有的ASP.NET成员身份
当您安装成员资格时,您正在创建自定义表和存储的proc。因此,您提到的用户应该存储在SQL数据库中。
从这个链接中,您可以看到安装后将有一个aspnet_users表,它是用户存储的。
我不知道ASP.NET MVC 3.0是否有一个安全的API,因为我很久以前就删除了ASP.NET MVC附带的ASP.NET成员类,并且我已经实现了自己。
此外,如果User有特殊含义,并且在您的问题域中除了用户名/密码之外还有其他属性,我强烈建议删除ASP.NET MVC成员类。
您仍然可以使用类似MvcMembership入门工具包DLL的东西与MVC项目中的内置MS Membership类和函数进行交互。
https://github.com/TroyGoode/MembershipStarterKit
希望这能有所帮助!