【原创】自定义Membership,KSPMembership发布,支持多数据库(mysql/oracle/sqlserver)

Membership相信大家都不陌生,Membership是微软在.NET 2.0时代推出的一套用户管理工具,问题在于微软官方的Membership仅仅是对SqlServer制作的,如果你的系统需要使用Mysql或者是Oracle就不好办了,虽然有些别的Membership能支持Mysql或者Oracle的,但是还没有一个集成到一起的。

经历了这么多项目之后,有的项目用的是SqlServer,有的项目用的是Oracle,还有的项目用的是Mysql,而这些MIS项目基本上都用到了Membership,所以才会想到做一个同时支持多数据库的Membership,而且这个Membership和微软官方的一样,都是标准的Membership,你原来的代码不用做任何更改就可以使用。

下面先介绍一下这个项目的基本思路:

1、        自定义的Membership需要从MembershipProvider 类继承,MembershipProvider类是一个抽象类,一般只要实现了这些类中的方法就可以完成自己的Membership,我的这个自定义的Membership叫KSPMembership。

2、        多数据库的支持是在自定义的Membership中进行分层,调用能支持多数据库的DAL即可。这里面使用了Ibatis.net来支持多数据库。

3、        微软自带的Membership数据库中有不少表,分析之后里面有些表没啥用,这里Membership相关的一共就4张表,Application(应用程序表),Role(角色表),User(用户表),UserInRole(用户对应角色表)

下面看看具体如何使用,以ASP.NET MVC2,MySql 举例:

1、  执行建表的SQL语句,将这4张表建立起来,SQL语句在附件组件包中。

2、  打开VS2008,建立一个ASP.NET MVC2 工程(MVC1 也一样),将组件包中所有DLL文件都COPY到BIN目录下。

3、  修改Web.Config文件,

A、 在<appSettings>节点下增加:

   
     
     < appSettings >
        
< add key = " KSPDBType "  value = " oracle " />
        
< add key = " KSPAPPName "  value = " MoleCart " />
    
</ appSettings >

 

说明:KSPDBType 是表示你的数据库类型,可以是 mysql/oracle/sqlserver 中的任意一个字符串,不区分大小写;KSPAPPName 是表示你的应用程序名称。

B、 在<connectionStrings>节点下增加:

   
     
     < connectionStrings >
        
< add name = " KSPDB "  connectionString = " server=127.0.0.1;database=kingsiteshop;user id=root;password=;charset=utf8 " />
    
</ connectionStrings >

 

说明:这个数据库连接是为Membership准备的。注意 KSPDB 是写死的,不能改变

C、 在<system.web>节点下修改增加:

   
     
代码
         < membership defaultProvider = " KSPMembershipProvider "
                    userIsOnlineTimeWindow
= " 15 " >
            
< providers >
                
< clear  />
                
< add
                    name
= " KSPMembershipProvider "
                    type
= "KingSite.Purview.KSPMembershipProvider,KingSite.Purview"
                    enablePasswordRetrieval = " false "
                    enablePasswordReset
= " true "
                    requiresQuestionAndAnswer
= " true "
                    requiresUniqueEmail
= " true "
                    passwordFormat
= " Hashed "
                    maxInvalidPasswordAttempts
= " 5 "
                    minRequiredPasswordLength
= " 6 "
                    minRequiredNonalphanumericCharacters
= " 0 "
                    passwordAttemptWindow
= " 10 "
                    writeExceptionsToEventLog
= " true "
            
/>
            
</ providers >
        
</ membership >
        
< roleManager enabled = " true "  cacheRolesInCookie = " true "  cookieName = " .ASPROLES "
            defaultProvider
= " KSPRoleProvider " >
            
< providers >
                
< clear  />
                
< add autogenerateschema = " true "  writeExceptionsToEventLog = " true "
                    name
= " KSPRoleProvider "  type = " KingSite.Purview.KSPRoleProvider,KingSite.Purview" />
             </ providers >
        
</ roleManager >

 

4、  完成后在VS2008 中先编译MVC网站项目,然后选中你的ASP.NET MVC 项目,然后点击 项目菜单-》ASP.NET 配置,打开VS自带的网站配置网页。

5、  如果一切正常你就会看到下图。

6、  恭喜你,自定义Membership可以工作了,你可以通过修改配置文件中的KSPDBType节点来修改数据库类型,很方便吧,不同的项目就可以配置为不同的数据库了。

7、KSPMembership在c# 3.5,Mysql 5.1,Oralce 10g,SqlServer 2008 测试通过。

8、  下载KSPMembership组件包

你可能感兴趣的:(sqlserver)