在非SqlServer数据库上实现MemberShip和Role功能(自定义MemberShipProvider和RoleProvider)
2008-01-05 22:21
483 查看
默认情况下,.Net网站上的MemberShip和Role功能只能用于SqlServer,如果要在其它数据库,比如Access,Oracle上使用该功能该怎么办呢?
其实MS早就为我们考虑到了,用户只要从MemberShipProvider和RoleProvider派生自己的Provider类,并实现相关的方法和属性就可以了,其实ASPX中的MemberShip功能就是这二个抽象类在SqlServer上的实现(有兴趣的朋友可以查阅一下System.Web.Security.SqlMembershipProvider)
这里只是给出一个MemberShip的演示,数据库结构如下:
用户表T_LoginUser
F_ID 用户ID
F_LoginName 登录名
F_Password 登录密码
自定义一个MyMemberShipProvider类,这里只实现了三个方法(Initialize,ValidateUser,CreateUser)
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public class MyMemberShipProvider:System.Web.Security.MembershipProvider
顺便也给个MyRoleProvider.cs,不过啥也没干,放了一个空架子,呵呵
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public class MyRoleProvider:System.Web.Security.RoleProvider
下面是关键的Web。config配置
<?xml version="1.0"?>
<configuration>
<appSettings/>
<connectionStrings>
<add name="connStr" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\demo.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<compilation debug="true"/>
<authentication mode="Forms">
<forms defaultUrl="~/Default.aspx" name="MemberShipProviderDemo" cookieless="UseCookies"></forms>
</authentication>
<membership defaultProvider="MyMemberShipProvider">
<providers>
<add type="MyMemberShipProvider" name="MyMemberShipProvider" requiresQuestionAndAnswer="false" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\demo.mdf;Integrated Security=True;User Instance=True"/>
</providers>
</membership>
</system.web>
</configuration>
好了,随便建一个Default.aspx,放一个Login控件和CreateUserWizard控件就可以测试了
其实MS早就为我们考虑到了,用户只要从MemberShipProvider和RoleProvider派生自己的Provider类,并实现相关的方法和属性就可以了,其实ASPX中的MemberShip功能就是这二个抽象类在SqlServer上的实现(有兴趣的朋友可以查阅一下System.Web.Security.SqlMembershipProvider)
这里只是给出一个MemberShip的演示,数据库结构如下:
用户表T_LoginUser
F_ID 用户ID
F_LoginName 登录名
F_Password 登录密码
自定义一个MyMemberShipProvider类,这里只实现了三个方法(Initialize,ValidateUser,CreateUser)
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public class MyMemberShipProvider:System.Web.Security.MembershipProvider
顺便也给个MyRoleProvider.cs,不过啥也没干,放了一个空架子,呵呵
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public class MyRoleProvider:System.Web.Security.RoleProvider
下面是关键的Web。config配置
<?xml version="1.0"?>
<configuration>
<appSettings/>
<connectionStrings>
<add name="connStr" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\demo.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<compilation debug="true"/>
<authentication mode="Forms">
<forms defaultUrl="~/Default.aspx" name="MemberShipProviderDemo" cookieless="UseCookies"></forms>
</authentication>
<membership defaultProvider="MyMemberShipProvider">
<providers>
<add type="MyMemberShipProvider" name="MyMemberShipProvider" requiresQuestionAndAnswer="false" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\demo.mdf;Integrated Security=True;User Instance=True"/>
</providers>
</membership>
</system.web>
</configuration>
好了,随便建一个Default.aspx,放一个Login控件和CreateUserWizard控件就可以测试了
相关文章推荐
- 在非SqlServer数据库上实现MemberShip和Role功能(自定义MemberShipProvider和RoleProvider)
- 在WEB自定义控件中实现自动回传功能
- 自定义Struts框架实现登陆功能
- BootStrap自定义popover,点击区域隐藏功能的实现
- 模块管理常规功能自定义系统的设计与实现(06--第一个用户模块)
- 使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
- 自定义RPC通讯框架,实现dubbo远程RPC服务治理功能
- [置顶] 【Android】Android开发之自定义View的功能实现详解。教你一步一步学会自定义View
- 模块管理常规功能自定义系统的设计与实现(52--功能更新[2] 对百分比字段的操作)
- jQuery插件Datepicker日期选择器实现Javascript自定义日期时间选择功能
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
- 使用自定义Camera实现简单拍照功能
- [ASP.NET 2.0 ]自定义role,Membership和profile数据库,在web.config中的写法
- 自定义HorizontalScrollView嵌套HorizontalListView实现手势监听、按钮监听横向滚动功能
- Android编程实现自定义Tab选项卡功能示例
- 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈,后台实现
- 模块管理常规功能自定义系统的设计与实现(19--模块附件的设计[2])
- Vue.js自定义下拉列表,如何实现在下拉列表区域外点击即可关闭下拉列表的功能
- 自定义日历 实现签到功能
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页