您的位置:首页 > 数据库

在非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控件就可以测试了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐