代码改变世界

在ASP.NET MVC中使用MySQL【并使用membership】

  AceYue  阅读(3406)  评论(11编辑  收藏  举报
        大多数情况下我们使用.NET或ASP.NET(包括MVC)程序时,我们会同时选择SQL Server 或者SQL Express (其他微软产品)做数据库。但是今天使用MVC已经完全没有必要这么做了,ASP.NET MVC的创建与ASP.NET相似,在.NET中一个核心组件ADO.NET允许我们连接各种不同的数据库,我们只需要一个连接器就可以了。在MYSQL中提供了几种不同的连接器供我们选择,官方广泛接受的MYSQL.NET Connector
 
          使用官方提供的包我们可以使用完整的功能,需要注意的是我们下载Connector后我们要如何配置web.config来连结我们的ASP.NET MVC程序已经如何使用ASP.NET Mumbership。首先我们先下载MySQL Connector/NET,下载地址:http://dev.mysql.com/downloads/connector/net/  下载好后,我们需要配置我们的web.config文件:
复制代码
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="DatabaseConnection" 
      connectionString="Server=localhost;Port=3306;Database=yourdbname;Uid=yourusername;Pwd=yourpassword;" 
      providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
  <!-- ... -->
</configuration>
复制代码

 

        现在我们就使用DatabaseConnection做为我们的主数据库连接了,按照惯例(Entity Freamwork)我们需要把继承自DbContext的类命名为DatabaseConnection。现在Entity Freamwork就可和MySQL数据库一起工作了。那么我们要如何使用Mumbership呢? 我们需要在web.config中做如下的配置:
复制代码
<configuration>
    <!-- ... -->
    
    <system.web>
        <!-- ... -->

        <authentication mode="Forms">
          <forms loginUrl="~/Account/LogOn" timeout="2880" />
        </authentication>

        <roleManager enabled="true" defaultProvider="MySQLRoleProvider">
          <providers>
            <clear/>
            <add name="MySQLRoleProvider" autogenerateschema="true" 
                 type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.5.4.0, 
                       Culture=neutral, PublicKeyToken=c5687fc88969c44d"
                 connectionStringName="MarioDB" applicationName="/" />
          </providers>
        </roleManager>

        <membership defaultProvider="MySQLMembershipProvider">
          <providers>
            <clear />
            <add name="MySQLMembershipProvider" autogenerateschema="true" 
                 type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, 
                       Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"
                 connectionStringName="MarioDB" enablePasswordRetrieval="false" 
                 enablePasswordReset="true" requiresQuestionAndAnswer="false" 
                 requiresUniqueEmail="true" maxInvalidPasswordAttempts="5" 
                 minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" 
                 passwordAttemptWindow="10" applicationName="/" />
          </providers>
        </membership>

        <!-- ... --->
    </system.web>
</configuration>
复制代码

 

        这里有一个重要的属性需要注意,如果我们没有设置autogenerateschema 为true的话,我们就要确保我们数据库中已经有包含mumbership和rule的表。这个不是必要的,但是我们后面为什么又要移除他呢?一方面是因为Database User不应该有太多权限,当表以创建好我们就要移除; 另一方面,我们要做额外的检查是否存在这些表,根本没有必要,删除会节省一定的时间。
 
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示