将WebSecurity与现有的Mysql数据库一起使用

时间:2015-05-04 21:08:12

标签: mysql asp.net asp.net-mvc-4

我是一名ICT学生,两年前我学会了如何处理asp.net和mvc3。我不得不用一个mysql数据库创建一个简单的网站。

现在我想用asp.net和MVC5创建自己的网站,仍然使用mysql。然而这么多变了!我试图弄清楚如何使用WebSecurity进行用户身份验证,使用SimpleMembership进行授权。

现在我有两个数据库。一个是生成的websecurity表,一个是我自己的表。我无法在互联网上找到关于如何使用这种组合的教程。

我的问题是这些:

  • 组合使用这两个数据库是否合乎逻辑?
  • 调用Websecurity.Login时,到底发生了什么?我的mysql数据库中有一个用户表。系统有没有办法检查这些记录?
  • 我有一个名为“Users”的表。我想使用这个表而不是aspnet_users生成的表。
  • 如何使用我的webconfig文件中生成的连接字符串?

我想尽可能具体。但是很难定义我真正需要知道的内容,因为我无法在互联网上找到一个关于websecurity和mysql数据库的好教程。

非常感谢帮助!

1 个答案:

答案 0 :(得分:0)

所以我只想用你正在谈论的方法建立一个网站。

第一步是在自己的数据库中拥有自己的用户表。你说你已经拥有了。大!第1步完成。现在,在ASP.NET应用程序中(假设您正在使用其中已存在的帐户控制器附带的默认模板等)。

另一步是在你的web.config文件中,确保有默认连接。您将要使用您的用户表所在的连接。

<add name="DefaultConnection" connectionString="CONNSTRINGHERE" providerName="System.Data.SqlClient" />

^看起来应该是这样的。当然,您可以在此处使用其他连接(只需在该部分内添加另一个连接字符串)。

现在,最后一步是进入InitializeSimpleMembershipAttribute.cs文件。我永远无法让代码为我工作,但我注释掉了构造函数中的所有内容并使用了它:

&#13;
&#13;
            public SimpleMembershipInitializer()
            {
                try
                {
                    if (!WebSecurity.Initialized)
                    {
                        WebSecurity.InitializeDatabaseConnection("CONNSTRINGHERE", "Users", "User_ID", "Username", autoCreateTables: true);
                    }
                }
                catch (Exception ex)
                {
                    throw new InvalidOperationException("Something is wrong", ex);
                }
            }
&#13;
&#13;
&#13;

如果用户&#34;用户&#34;,则需要在其中输入数据库表的名称。你说你的用户也叫做用户,所以不需要做任何改动。

所以这一切的工作方式是,您在webconfig中为数据库定义了默认连接。 Simplemembership知道您的表称为用户。确保有一个名为&#34; username&#34;的列,你应该好好去。下次运行应用程序时,它将为您自动创建数据库中的四个表:webpages_Membership,webpages_OAuthMembership,webpages_Roles,webpages_UsersInRoles。您可以查看这些内容并查看它们的使用方式等。我不会详细介绍。

但是,您的网站现在将使用您用户表中的登录信息进行身份验证。创建新用户时,它将使用所有这些表的组合进行身份验证。

希望这对你有所帮助。您的connstrings可能会有所不同,因为我使用的是sqlserver而您正在使用mysql。你可以谷歌适当的connstring格式。