惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - 老姜

SQL Server 2008 收缩日志 日志与工厂模式(二) 日志与工厂模式(一) The timeout period elapsed prior to obtaining a connection from the pool.数据库连接池满的原因 Asp.net mvc 入门介绍(公司内部讲座学习资料) 反射复习(Reflection) SERV-U 防火墙设置 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败 的解决方法 ASP.NET MVC 多语言解决方案 C#(ASP.NET)DateTime日期类型格式化显示 (转载) DLinq 仅支持SQL SERVER ,不支持Mysql/Oracle 从SQL SERVER 2000到SQL SERVER 2005 视图中存在 ORDER BY 语句的完全解决方案 一个中型OA系统的架构过程(二) Enterprise Library for .NET Framework 2.0 掌握 ASP.NET 之路:自定义实体类简介(转载-ORM、泛型等) 转载:一个中型OA系统的架构过程(一) WebServices层次划分 SQL SERVER 2000 存储过程不支持数组的解决方法! 通过日志来恢复到你要的时点
【原创】自定义Membership,KSPMembership发布,支持多数据库(mysql/oracle/sqlserver)
老姜 · 2011-02-15 · via 博客园 - 老姜

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组件包