我是MySQL的MVC新手。我在MySQL的MVC 4中有代码优先应用程序。
public class Category
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
public virtual IEnumerable<Product> Products { get; set; }
}
public class Product
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
public DateTime CreateDate { get; set; }
public int CategoryID { get; set; }
public virtual Category Category { get; set; }
}
public class MyContext : DbContext
{
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
}
在web.config中:
<connectionStrings>
<add name="MyContext" connectionString="server=localhost; User Id=root; Pwd=mypass; Persist Security Info=True; database=catalogue" providerName="MySql.Data.MySqlClient " />
</connectionStrings>
因此,这会在mysql中创建目录数据库。但我也想使用 mysql的成员身份。注册,创建用户和管理他们的角色。 例如,使用mvc4的默认AccountModels
我将此代码添加到web.config:
<system.web>
<membership defaultProvider="MySQLMembershipProvider">
<providers>
<clear />
<remove name="MySQLMembershipProvider" />
<add name="MySQLMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" applicationName="/" description="MySQL default application" connectionStringName="LocalMySqlServer" writeExceptionsToEventLog="True" autogenerateschema="True" enablePasswordRetrieval="True" enablePasswordReset="True" requiresQuestionAndAnswer="False" requiresUniqueEmail="False" passwordFormat="Clear" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
</providers>
</membership>
<profile defaultProvider="MySQLProfileProvider">
<providers>
<clear />
<remove name="MySQLProfileProvider" />
<add name="MySQLProfileProvider" type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" applicationName="/" description="Profiles" connectionStringName="LocalMySqlServer" writeExceptionsToEventLog="False" autogenerateschema="True" />
</providers>
</profile>
<roleManager enabled="false" defaultProvider="MySQLRoleProvider">
<providers>
<clear />
<remove name="MySQLRoleProvider" />
<add name="MySQLRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" applicationName="/" description="Project Roles" connectionStringName="LocalMySqlServer" writeExceptionsToEventLog="True" autogenerateschema="True" />
</providers>
</roleManager>
</system.web>
运行应用程序时出现此错误:
我忘记了哪一步?我不能使用会员资格。
(抱歉英语不好)
答案 0 :(得分:3)
如果您想要使用随VS2010或VS2012的MVC4 Internet模板附带的成员资格提供程序,使用SQL Server系列以外的数据库,即SQL Server,SQL Compact和Azure,我认为这是不可行的,因为MVC4使用SimpleMembership提供程序,而不是数据库不可知。
已经说过,这并不意味着你无法达到你想要的效果。我建议使用Microsoft ASP.NET Universal Providers核心库。我建议你阅读这篇优秀的Post
现在,在本文中,作者Scott Hanselman提到了以下内容
使用这些通用“默认配置文件提供程序”意味着您所要做的就是设置正确的连接字符串,使用这些服务的应用程序将与SQL Server(加Express),SQL Server Compact和SQL Azure一起使用,无需更改代码来自你。
嗯,其他SQL标准怎么样?,让我们按照这些步骤进行操作,
1)确保首先更改连接字符串,然后使用Nuget Package Manager安装MySQL.Web和MySQL.Data。
<connectionStrings>
<add name="MySQLConn" connectionString="Server=localhost;Database=dbname;Uid=dbuser;Pwd=dbpass;" />
</connectionStrings>
2)使用Nuget Package Manager查找并安装“Microsoft ASP.NET Universal Providers Core Libraries”或在Package Manager Console中运行以下命令,
Install-Package system.web.providers
Install-Package Microsoft.AspNet.Providers.Core
3)转到项目菜单 - &gt; ASP.Net配置,您将在浏览器ASP Net Administration工具中看到您的Web项目。
4)然后转到“提供程序”选项卡,转到“为每个功能选择不同的提供程序(高级)”
5)确保选择MySQL Membership Provider。
6)然后转到“安全”选项卡,创建一些您认为项目所需的角色和用户。 如果由于某种原因您在此处收到错误,请尝试更改您的网络配置,并使用this替换成员资格,角色和个人资料
7)享受!
我希望这会有所帮助
PS:我对此也很陌生,所以我愿意接受关于针对其他SQL数据库的最佳MVC4成员资格提供程序的建议。答案 1 :(得分:1)
作为附注,您不能使用相同的帐户控制器,ASP Net MVC3的Internet模板或VS2010或VS2012的MVC4。虽然你必须自己实现这一切。
如果要为登录/注销/角色管理/创建用户等快速添加MVC模板,可以使用例如Security Guard。
我提出的方法不是补丁,也不是黑客,ASP Net Membership Provider长期由Microsoft实施和推广,MySQL将功能添加到网络中。连接器,他们甚至发布了它。的 Here 强>
所以不用担心,你可以安全地使用这种方法,除非有一个强烈反对使用ASP Net Membership Provider的论据,我不知道。
答案 2 :(得分:0)
这取自GridWizzard - 您只需要在appsettings下将enableSimpleMembership设置为false,http://gridwizard.wordpress.com/2014/03/05/asp-net-mvc4-just-get-it-running-without-having-to-implement-membershiproleprovider/