65.9K
CodeProject 正在变化。 阅读更多。
Home

MySQL 会员管理、角色管理、站点地图、个性化提供程序 for ASP.NET 2.0

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.33/5 (7投票s)

2007年9月8日

CPOL

2分钟阅读

viewsIcon

126623

downloadIcon

911

一个使用 MySQL 作为后端数据库的会员管理、角色管理、站点地图和个性化提供程序。

引言

这是使用 MySQL 作为后端数据库的 ASP.NET 会员管理、角色管理、站点地图和个性化提供程序的实现。 此类使用本机 net MySQL Connector 版本 5.1.2。

背景

此代码基于 J Snyman 的工作;他使用 ODBC 连接到 MySQL。 我修改了它以使用本机 net MySQL Connector 版本 5.1.2。

使用代码

这实际上是一个 C# 类项目。 您只需要在您的 Web 项目中引用此项目编译后的 DLL 输出。 即使您的 Web 应用程序的语言是 VB,您也可以使用它。 提供的编译 DLL 可以开箱即用,但如果您愿意,也可以自行编译。

使用这些提供程序非常简单。

  1. 在您的 MySQL 服务器上创建一个新的数据库,例如:SimpleProviders
  2. 在新创建的数据库上执行以下 SQL 语句
  3. CREATE TABLE 'personalization' (
    'username' varchar(255) default NULL,
    'path' varchar(255) default NULL,
    'applicationname' varchar(255) default NULL,
    'personalizationblob' blob
    );
    
    CREATE TABLE 'profiles' (
    'UniqueID' int(8) NOT NULL auto_increment,
    'Username' varchar(255) NOT NULL default '',
    'ApplicationName' varchar(255) NOT NULL default '',
    'IsAnonymous' tinyint(1) default '0',
    'LastActivityDate' datetime default NULL,
    'LastUpdatedDate' datetime default NULL,
    PRIMARY KEY ('UniqueID'),
    UNIQUE KEY 'PKProfiles' ('Username','ApplicationName'),
    UNIQUE KEY 'PKID' ('UniqueID')
    );
    
    CREATE TABLE 'roles' (
    'Rolename' varchar(255) NOT NULL default '',
    'ApplicationName' varchar(255) NOT NULL default '',
    PRIMARY KEY ('Rolename','ApplicationName')
    );
    
    CREATE TABLE 'sitemap' (
    'ID' int(11) NOT NULL auto_increment,
    'ApplicationName' varchar(255) NOT NULL default '',
    'Title' varchar(255) default NULL,
    'Description' text,
    'Url' text,
    'Roles' text,
    'Parent' int(11) default NULL,
    PRIMARY KEY ('ID')
    );
    
    CREATE TABLE 'users' (
    'PKID' varchar(255) NOT NULL default '',
    'Username' varchar(255) NOT NULL default '',
    'ApplicationName' varchar(255) NOT NULL default '',
    'Email' varchar(128) default NULL,
    'Comment' varchar(255) default NULL,
    'Password' varchar(128) NOT NULL default '',
    'FailedPasswordAttemptWindowStart' datetime default NULL,
    'PasswordQuestion' varchar(255) default NULL,
    'IsLockedOut' tinyint(1) default '0',
    'PasswordAnswer' varchar(255) default NULL,
    'FailedPasswordAnswerAttemptCount' int(8) default '0',
    'FailedPasswordAttemptCount' int(8) default '0',
    'IsApproved' tinyint(1) NOT NULL default '0',
    'FailedPasswordAnswerAttemptWindowStart' datetime default NULL,
    'LastActivityDate' datetime default NULL,
    'IsOnLine' tinyint(1) default '0',
    'CreationDate' datetime default NULL,
    'LastPasswordChangedDate' datetime default NULL,
    'LastLockedOutDate' datetime default NULL,
    'LastLoginDate' datetime default NULL,
    PRIMARY KEY ('PKID'),
    UNIQUE KEY 'PKID' ('PKID'),
    KEY 'PKID_2' ('PKID'),
    KEY 'usr' ('Username')
    );
    
    CREATE TABLE 'usersinroles' (
    'Username' varchar(255) NOT NULL default '',
    'Rolename' varchar(255) NOT NULL default '',
    'ApplicationName' varchar(255) NOT NULL default '',
    PRIMARY KEY ('Username','Rolename','ApplicationName')
    );

    包含上述代码的 SQL 文件 DBStructure.sql 包含在源代码 zip 文件中。

  4. 打开 Visual Studio 并创建一个新的网站项目。
  5. 添加对 Simple.Providers.MySQL.dll 的引用。
  6. 对您的 web.config 文件进行以下更改
    1. 将连接字符串添加到您新创建的数据库的 connectionStrings 部分
    2. <add 
        connectionString="server=localhost;database=simpleproviders;
                          user id=<put user>;pwd=<put password>" 
        name="SimpleProviderconnectionstring" 
        providerName="MySql.Data.MySqlClient"/>

      * 请将连接字符串中的 {Your username}{Your password} 条目替换为您自己的值。

    3. <system.web> 部分下,添加以下内容
    4. <siteMap defaultProvider="siteMapProvider" enabled="true">
        <providers>
          <clear />
           <add name="siteMapProvider" 
             type="Simple.Providers.MySQL.MysqlSiteMapProvider" 
             connectionStringName="SimpleProviderConnectionString" 
             applicationName="{Your App Name}" 
             description="MySQL site map provider" 
             securityTrimmingEnabled="true"/>
        </providers>
      </siteMap>
      <roleManager defaultProvider="roleProvider" enabled="true" 
             cacheRolesInCookie="false" cookieName=".ASPROLES" 
             cookieTimeout="7200" cookiePath="/" cookieRequireSSL="false" 
             cookieSlidingExpiration="true" cookieProtection="All">
        <providers>
        <clear />
        <add name="roleProvider" 
          type="Simple.Providers.MySQL.MysqlRoleProvider" 
          connectionStringName="SimpleProviderConnectionString" 
          applicationName="{Your App Name}" 
          description="MySQL role provider"/>
        </providers>
      </roleManager>
      <membership defaultProvider="membershipProvider" 
            userIsOnlineTimeWindow="15">
        <providers>
        <clear />
        <add name="membershipProvider" 
          type="Simple.Providers.MySQL.MysqlMembershipProvider" 
          connectionStringName="SimpleProviderConnectionString" 
          applicationName="{Your App Name}" 
          enablePasswordRetrieval="true" enablePasswordReset="true" 
          requiresQuestionAndAnswer="true" 
          requiresUniqueEmail="true" passwordFormat="Encrypted" 
          minRequiredPasswordLength="6" 
          minRequiredNonalphanumericCharacters="0" 
          description="MySQL membership provider"/>
        </providers>
      </membership>
      <profile defaultProvider="profileProvider" 
              automaticSaveEnabled="true">
        <providers>
        <clear />
        <add name="profileProvider" 
          type="Simple.Providers.MySQL.MysqlProfileProvider" 
          connectionStringName="SimpleProviderConnectionString" 
          applicationName="{Your App Name}" 
          description="MySQL Profile Provider"/>
        </providers>
        <properties>
        <clear />
          <!--
            Add any needed attributes for profiles here.
            eg. <add name="Theme" type="System.String" 
            defaultValue="Default"/>
          -->
        </properties>
      </profile>
      <webParts>
        <personalization defaultProvider="personalizationProvider">
        <providers>
          <clear />
          <add name="personalizationProvider" 
             type="Simple.Providers.MySQL.MysqlPersonalizationProvider" 
             connectionStringName="{Your Connection String Name}" 
             applicationName="{Your App Name}" 
             description="MySQL Personalization Provider/>
          </providers>
        </personalization>
      </webParts>

      请**替换** {Your App Name} 实例为有效的应用程序名称。 应用程序名称**不**应包含任何空格或特殊字符。

  7. 现在应该设置好一切了。

继续您的项目的其余部分,并确保利用上述提供程序提供的功能。

历史

  • 2007年9月7日 - 使用 MySQL Net Connector 5.1.2 代替 ODBC。
© . All rights reserved.