zoukankan      html  css  js  c++  java
  • 【原创】自定义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组件包

  • 相关阅读:
    Docker基础 镜像,容器,仓库核心概念 常用命令和软件安装示例
    JHipster创建微服务及相关微服务架构组件介绍
    PageHelper分页插件及相关案例介绍
    DataTables API及服务端处理模式介绍和后端分页案例
    微服务概念及SpringCloud五大神兽介绍
    GitHub上重要的几个搜索技巧
    Java 内存区域详解
    莫等闲,白了少年头,空悲切!
    解决Mongoose中populate方法导致模板引擎art-template无法渲染的问题,错误-RangeError: Maximum call stack size exceeded
    vscode添加到右键菜单【win10系统】
  • 原文地址:https://www.cnblogs.com/codehunter008/p/1954913.html
Copyright © 2011-2022 走看看