使用Membership服务与自己写的用户数据库关联
2008-10-30 00:10
393 查看
Membership服务提供了成员服务,往往自己也会写很多的数据库,其中需要和成员关联,完全用Profile不现实,这里就涉及到UserID的问题
我采取的方法是单独建立一个表,建立MemberShip提供的UserID和自己的数据库之间的一对一关系
可能你觉得维护这个表是个很麻烦的事情,其实维护这个表并不麻烦,我们要做的就是在新建和删除用户的时候自动在这张表里加入个删除相应的数据。
我在这个表里面加入了三个字段,UserID存放Guid类型的MemberShip中的ID,uid存放自动增加的uid,为方便起见,也加入了userName字段存放用户名,事实上完全还可以在这个数据表里面加入其他用户信息,不过数据库概论告诉我们,这个一对一的表里面不该放太多的东西
我们新建一个类,继承默认的SqlMembershipProvider
代码如下:
其中DbHelper是操作数据库的DAL类,就是做一些基本的添加删除工作
这样在自己的数据库中就可以完全按照uid进行处理,不用管任何和那个Guid相关的问题了。
对了 看看web.config里面怎么写的
我采取的方法是单独建立一个表,建立MemberShip提供的UserID和自己的数据库之间的一对一关系
可能你觉得维护这个表是个很麻烦的事情,其实维护这个表并不麻烦,我们要做的就是在新建和删除用户的时候自动在这张表里加入个删除相应的数据。
我在这个表里面加入了三个字段,UserID存放Guid类型的MemberShip中的ID,uid存放自动增加的uid,为方便起见,也加入了userName字段存放用户名,事实上完全还可以在这个数据表里面加入其他用户信息,不过数据库概论告诉我们,这个一对一的表里面不该放太多的东西
我们新建一个类,继承默认的SqlMembershipProvider
代码如下:
public class UserMemberShipProvider : SqlMembershipProvider { // // 摘要: // 向 SQL Server 成员资格数据库添加一个新用户。 // // 参数: // isApproved: // 是否允许验证新用户。 // // passwordAnswer: // 新用户的密码提示问题答案。 // // username: // 新用户的用户名。 // // providerUserKey: // 唯一标识 SQL Server 数据库中成员资格用户的 System.Guid。 // // password: // 新用户的密码。 // // passwordQuestion: // 新用户的密码提示问题。 // // email: // 新用户的电子邮件地址。 // // status: // 一个 System.Web.Security.MembershipCreateStatus 值,指示是否成功创建用户。 // // 返回结果: // 用于新创建用户的 System.Web.Security.MembershipUser 对象。 //如果没有创建用户,此方法将返回null。 public override MembershipUser CreateUser( string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status) { MembershipUser user = base.CreateUser( username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status); if (status == MembershipCreateStatus.Success) { //添加User 表中内容 DbHelper.ExecuteNonQuery( "INSERT INTO [Users] ([userID],[userName]) VALUES (@userID,@userName)", DbHelper.MakeParameter("userID", DbType.Guid, user.ProviderUserKey), DbHelper.MakeParameter("userName", DbType.String, user.UserName)); } return user; } // // 摘要: // 从 SQL Server 成员资格数据库删除用户的成员资格信息。 // // 参数: // username: // 要删除的用户的名称。 // // deleteAllRelatedData: // 如果为 true,则从数据库中删除与该用户相关的数据; //如果为 false,则将与该用户相关的数据保留在数据库。 // // 返回结果: // 如果用户已删除,则为 true;否则为 false。 //如果数据库中没有此用户,也会返回 false 值。 public override bool DeleteUser(string username, bool deleteAllRelatedData) { object userID = GetUser(username, false).ProviderUserKey; bool isDeleted = base.DeleteUser(username, deleteAllRelatedData); if (isDeleted) { //删除User表中内容 DbHelper.ExecuteNonQuery("DELETE FROM [Users] WHERE userID=@userID", DbHelper.MakeParameter("userID", DbType.Guid, userID)); } return isDeleted; } }
其中DbHelper是操作数据库的DAL类,就是做一些基本的添加删除工作
这样在自己的数据库中就可以完全按照uid进行处理,不用管任何和那个Guid相关的问题了。
对了 看看web.config里面怎么写的
<membership> <providers> <remove name="AspNetSqlMembershipProvider"/> <add name="AspNetSqlMembershipProvider" type="ABSC.MemberShipProvider.UserMemberShipProvider" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" /> </providers> </membership>
相关文章推荐
- 使用asp.net2.0的Membership服务与自己写的用户数据库关联
- asp.net2.0 Membership 中使用自己的数据库
- DQL添加逻辑服务使用自己的数据库(包含建立元数据)
- Android使用ContentObserver监听数据库变化 接受指定号码的短信,并且不让系统截取到通知用户
- 18.2.1 在同一主机上使用用户管理备份建立物理备用数据库
- 转帖:MS SQL Server 2000 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法
- 18.2.2 在不同主机上使用用户管理备份建立物理备用数据库
- 第 2 章 使用数据库管理用户权限
- matlab如何使用、显示、修改和如何创建用户自己的颜色映象
- SpringCloud SpringBoot mybatis 分布式微服务(八)Spring Boot中使用JdbcTemplate访问数据库
- 修改用户信息的时候,使用Servlet对新的数据和数据库的数据进行对比,修改成功实现页面的弹窗和页面的跳转
- 【JavaWeb】XML文件_使用xml文件作为数据库并且使用xpath技术模拟用户登录
- Rman使用前的准备工作,创建恢复目录所需要使用的表空间,在目录数据库创建rman用户,在目录数据库建立恢复目录
- 数据库设计中,多对多关系使用使用逗号分割关联讨论
- Spring Boot集成Security使用数据库用户角色权限ROLE_问题
- 企业分布式微服务云SpringCloud SpringBoot mybatis (十一)Spring Boot中使用Redis数据库
- 为什么FleaPHP使用Table Data Gateway代替Active Record提供数据库访问服务
- 使用PHPMYADMIN添加新用户和数据库
- node.js-ORM数据库框架sequelize使用总结 超时查询、缓存查询、多表关联查询
- 使用ASP.NET WEB API构建基于REST风格的服务实战系列教程(一)——使用EF6构建数据库及模型