我是MVC 3的新手并经历了很多很酷的教程。热爱设计模式,提高生产力。
我现在遇到的一个问题是我使用内置数据库来处理大多数教程中许多基本MVC应用程序背后的登录。我现在需要更改以访问实时生产系统的登录详细信息,但无法找到它的位置。
我最初教过的就像更改连接字符串一样简单,但是生产数据库与组成的示例完全不同。
模型/控制器从哪里获取数据对我来说并不明显。例如,模型/控制器在哪里检索用户名或者密码密码。如果我知道这一点,那么我可以改变我的解决方案以指向正确的数据库/表/字段。
此外,我的真实数据库是在EF中建模的,并且位于同一解决方案中的单独项目中。所以我有MyProject.Data和MyProject.Web,最终会有MyProject.Test等。
这里的任何帮助都会有很大的帮助。提前谢谢。
编辑1:真实数据库还有一个带有用户名和密码字段的登录表,就像MVC简单登录数据库一样。但是,数据库显然不像示例项目那样是系统的一部分。相反,它坐在服务器上等待访问。
我的问题是我不知道该去哪做更改。我以为这将是连接字符串,但这不起作用。即使我得到的错误也只是指向连接字符串,而不是给我一行代码来查找。
答案 0 :(得分:1)
默认情况下,框架会提取与DbContext派生类相同的连接字符串。因此,请查找与此类相同的连接字符串。已经说过这个连接字符串与默认表单实现完全没有关系,因为它来自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>
在那里你看到了connectionStringName被识别出来。您当然可以简单地更改此设置,但最有可能的情况是,如果您已有现有数据库,则很可能无法正确构建。
Henk的评论很可能是因为您需要创建自己的成员资格提供程序(只需创建一个类并继承MembershipProvider并实现CreateUser,GetUser,ValidateUser和ApplicationName(或者我认为))。您需要确保注册此提供程序以代替AspNetMembershipProvider。一旦你这样做,你应该看到你的提供商点击了断点,并根据你的需要为你的数据库实现/ AD /...