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目录下,然后项目中添加引用KingSite.Purview.dll(必须引用)

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.Services.KSPMembershipProvider"
                    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.Services.KSPRoleProvider" />
            
</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组件包

作者: 老姜 发表于 2011-02-15 10:48 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"