zoukankan      html  css  js  c++  java
  • ASP.NET + MySQL 开发笔记 MembershipProvider 和 RoleProvider 用法

    以前使用一个老外写的 MembershipProvider 和 RoleProvider,  是从 codeproject.com 网站上找到的, 用起来感觉还不错.  但是没有实现用户的个性化引擎, 即不支持Profile. 采用的 MySql .Net 连接器是 5.0.6

    现在采用 MySql .Net 连接器是 5.2.2 , 其中已经包含了用户提供程序和角色提供程序. 

    配置当中的注意事项:

    1.  将 MySql.Data.dll  和 MySql.Web.dll  拷贝到 网站的 Bin 目录下.  MySql.Web.dll  是 角色提供程序必要的组件.

    2.  配置 Web.config

    例如:  在 System.Web 节内配置如下

      用户管理提供程序

      <membership defaultProvider="MySqlMembershipProvider">
       <providers>
        <clear />
        <add autogenerateschema="true" connectionStringName="AppDBConnString"
         enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true"
         applicationName="MySite" requiresUniqueEmail="true" passwordFormat="Hashed"
         maxInvalidPasswordAttempts="5" minRequiredPasswordLength="1"
         minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
         passwordStrengthRegularExpression="" description="MySQL AB Membership Provider"
         name="MySqlMembershipProvider" type="MySql.Web.Security.MySqlMembershipProvider" />
       </providers>
      </membership>

    角色提供程序

       <roleManager enabled="true" cacheRolesInCookie="true" cookieName=".ASPROLES"
       defaultProvider="MySqlRoleProvider">
       <providers>
        <clear />
        <add connectionStringName="AppDBConnString" applicationName="MySite"
         writeExceptionsToEventLog="false" name="MySqlRoleProvider" type="MySql.Web.Security.MySqlRoleProvider" />
       </providers>
      </roleManager>

      解释:

    (1)  connectionStringName="AppDBConnString"  放置的是 MySQL 数据库的链接字符串设置

    (2)  autogenerateschema="true"  设置为 true 时, 当在 VS  当中选择"网站"菜单进行配置时,  会自动生成相关的数据表(共7个).

    (3)  applicationName="MySite"   是应用程序的标识,  如果你在一台计算机上有多个网站, 这个标识不能重复, 否则提供程序将会出错

    3.  配置成功后, 可以将 MySQL 自动生成的用户及角色管理表导出来, 生成 SQL 语句,  以便于整个系统的每日构建.  这时就可以将 autogenerateschema 设置成 false.   可以采用 MySql Query Browser 将名称以 my_asp_  开始的几个表导出为 Create 形式的 Sql 语句. 需要注意的有一点, 就是 my_aspnet_schemaversion 表中必须有一条记录, 此表仅有一个字段 version , 其值为 3.  没有此条记录, 则提供程序会报错.

    也可以将以下的 sql 语句保存为 sql 文件, 采用 source 语句执行它, 为 MySQL 加上这些相关的表:

    /*
        MySql 官方 Memeber 及 Role 服务提供程序所使用的数据库结构
    */

    DROP TABLE IF EXISTS `cfh2008`.`my_aspnet_applications`;
    CREATE TABLE  `cfh2008`.`my_aspnet_applications` (
      `id` int(11) NOT NULL auto_increment,
      `name` varchar(256) default NULL,
      `description` varchar(256) default NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    DROP TABLE IF EXISTS `cfh2008`.`my_aspnet_membership`;
    CREATE TABLE  `cfh2008`.`my_aspnet_membership` (
      `userId` int(11) NOT NULL default '0',
      `Email` varchar(128) default NULL,
      `Comment` varchar(255) default NULL,
      `Password` varchar(128) NOT NULL,
      `PasswordKey` char(32) default NULL,
      `PasswordFormat` tinyint(4) default NULL,
      `PasswordQuestion` varchar(255) default NULL,
      `PasswordAnswer` varchar(255) default NULL,
      `IsApproved` tinyint(1) default NULL,
      `LastActivityDate` datetime default NULL,
      `LastLoginDate` datetime default NULL,
      `LastPasswordChangedDate` datetime default NULL,
      `CreationDate` datetime default NULL,
      `IsLockedOut` tinyint(1) default NULL,
      `LastLockedOutDate` datetime default NULL,
      `FailedPasswordAttemptCount` int(10) unsigned default NULL,
      `FailedPasswordAttemptWindowStart` datetime default NULL,
      `FailedPasswordAnswerAttemptCount` int(10) unsigned default NULL,
      `FailedPasswordAnswerAttemptWindowStart` datetime default NULL,
      PRIMARY KEY  (`userId`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='2';

    DROP TABLE IF EXISTS `cfh2008`.`my_aspnet_profiles`;
    CREATE TABLE  `cfh2008`.`my_aspnet_profiles` (
      `userId` int(11) NOT NULL,
      `valueindex` longtext,
      `stringdata` longtext,
      `binarydata` longblob,
      `lastUpdatedDate` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
      PRIMARY KEY  (`userId`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    DROP TABLE IF EXISTS `cfh2008`.`my_aspnet_roles`;
    CREATE TABLE  `cfh2008`.`my_aspnet_roles` (
      `id` int(11) NOT NULL auto_increment,
      `applicationId` int(11) NOT NULL,
      `name` varchar(255) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;

    DROP TABLE IF EXISTS `cfh2008`.`my_aspnet_schemaversion`;
    CREATE TABLE  `cfh2008`.`my_aspnet_schemaversion` (
      `version` int(11) default NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    DROP TABLE IF EXISTS `cfh2008`.`my_aspnet_users`;
    CREATE TABLE  `cfh2008`.`my_aspnet_users` (
      `id` int(11) NOT NULL auto_increment,
      `applicationId` int(11) NOT NULL,
      `name` varchar(256) NOT NULL,
      `isAnonymous` tinyint(1) NOT NULL default '1',
      `lastActivityDate` datetime default NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    DROP TABLE IF EXISTS `cfh2008`.`my_aspnet_usersinroles`;
    CREATE TABLE  `cfh2008`.`my_aspnet_usersinroles` (
      `userId` int(11) NOT NULL default '0',
      `roleId` int(11) NOT NULL default '0',
      PRIMARY KEY  (`userId`,`roleId`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;

    use cfh2008;
    insert into my_aspnet_schemaversion (version) values (3);

  • 相关阅读:
    2016年5月27日上午(妙味课堂js基础-3笔记一(事件))
    2016年5月26日晚上(妙味课堂js基础-2笔记四(BOM))
    2016年5月26日晚上(妙味课堂js基础-2笔记三(DOM))
    2016年5月26日晚上(妙味课堂js基础-2笔记二(DOM))
    2016年5月26日下午(妙味课堂js基础-2笔记一(DOM))
    2016年5月26日下午(妙味课堂js基础-1笔记四)
    2016年5月26日下午(妙味课堂js基础-1笔记三)
    2016年5月26日上午(妙味课堂js基础-1笔记二)
    【Django】不知道为什么就是想学一下 01
    【Ubuntu】安装Java和Eclipse
  • 原文地址:https://www.cnblogs.com/chinaontology/p/1269879.html
Copyright © 2011-2022 走看看