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);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现一个图书管理系统,需要考虑以下几个方面: 1. 数据库设计 需要设计图书、用户、借阅记录等几个主要表,并确定它们之间的关系。可以使用 Microsoft SQL Server 等关系型数据库管理系统存储数据。 2. 界面设计 需要设计用户登录、图书查询、借阅归还等功能的界面。可以使用 ASP.NET Web Forms 或 ASP.NET MVC 框架开发网页,并使用 HTML、CSS 和 JavaScript 等前端技术渲染页面。 3. 后端逻辑 需要编写 C# 代码实现用户登录、图书查询、借阅归还等功能的后端逻辑。可以使用 ADO.NET 或 Entity Framework 等技术访问数据库,并根据用户的请求进行相应的操作。 下面是一个简单的示例: 1. 数据库设计 创建三张表 Book、User 和 Borrow,它们之间的关系如下: Book(图书表): - Id(主键) - Name(图书名称) - Author(作者) - PublishDate(出版日期) - Price(价格) User(用户表): - Id(主键) - Username(用户名) - Password(密码) - Email(邮箱) Borrow(借阅记录表): - Id(主键) - UserId(外键,关联用户表) - BookId(外键,关联图书表) - BorrowDate(借阅日期) - ReturnDate(归还日期) 2. 界面设计 可以创建以下几个页面: - 登录页面(Login.aspx) - 注册页面(Register.aspx) - 主页(Default.aspx) - 图书查询页面(Books.aspx) - 借阅归还页面(Borrow.aspx) 其中,登录页面和注册页面需要使用 ASP.NET Web Forms 提供的控件实现用户输入和提交。主页需要显示当前用户的借阅记录和操作按钮。图书查询页面需要使用 ASP.NET GridView 控件显示图书列表,并提供搜索和排序功能。借阅归还页面需要显示当前借阅的图书,以及提供借阅和归还按钮。 3. 后端逻辑 可以在代码中实现以下几个功能: - 用户登录和注册 使用 ASP.NET 提供的 MembershipProvider 实现用户验证和注册功能。 - 图书查询和借阅归还 使用 ADO.NET 或 Entity Framework 访问数据库,并根据用户的请求进行相应的操作。 - 页面跳转和数据传递 使用 ASP.NET 提供的跳转方法和 Session 对象实现页面之间的跳转和数据传递。 以上是一个简单的图书管理系统的实现方式,可以根据实际需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值