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


        大多數情況下我們使用.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不應該有太多權限,當表以創建好我們就要移除; 另一方面,我們要做額外的檢查是否存在這些表,根本沒有必要,刪除會節省一定的時間。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM