[重写默认的4个权限设置相关的类:一]实现自定义用户配置提供程序ProfileProvider

前言

最近在学习ASP.NET,发现了几个有趣的类,比如自定义用户配置提供程序ProfileProvider,成员提供程序MembershipProvider,角色管理RoleProvider,会话状态SessionStateStoreProvider,这几个类经常作为权限相关设置,但是默认这几个类都必须使用定制的数据库,因此造成诸多限制

但如果重写这些类,然后配合.NET原有的API来使用,这样一来用着方便,二来由于提供程序是自定义的,能够满足自己的要求

于是小弟我试着重写这些类,分享自己的一些心得体会,希望各位前辈能够多多指教啦

 

实现自定义用户配置提供程序ProfileProvider

一。说明

在ASP.NET中,可以在web.config文件设置用户个性配置,然后在代码中这么写

 

Code

 

 

这样看似确实很方便,但是缺点就是如果要使用这个用户个性配置,默认是使用SqlProfileProvider,连数据库相关的表都被定死了

唯一的办法就是重写此类,然后让其支持自定义数据库,甚至是支持XML,TXT或者能够想到的任何可以存储信息的媒介

在重写之前,首先要了解该类的一些需要重写的方法和属性

属性
string ApplicationName{get,set} 返回和设置应用程序名
string Name{get} 返回提供程序的名称
string Description{get} 返回一些描述

方法
void Initialize(string name, System.Collections.Specialized.NameValueCollection config) 初始化用的
int DeleteProfiles(string[] usernames) 根据用户名集合来删除用户的个性信息,并返回影响行数
int DeleteProfiles(ProfileInfoCollection profiles) 根据用户信息来删除用户的个性信息,并返回影响行数
ProfileInfoCollection GetAllProfiles(ProfileAuthenticationOption authenticationOption, int pageIndex, int pageSize, out int totalRecords) 获取所有的个性信息,ProfileAuthenticationOption 枚举用于定义是返回匿名用户的还是登陆用户的还是全部的,两个INT型参数用于分页,最后的那个INT参数用于获取返回的行的总数
int DeleteInactiveProfiles(ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate) 删除超时用户的信息
SettingsPropertyValueCollection GetPropertyValues(SettingsContext context, SettingsPropertyCollection collection) 返回当前用户的个性信息
void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection) 设置当前用户的个性信息

还有4个方法,比如
GetNumberOfInactiveProfiles(),FindInactiveProfilesByUserName(),FindProfilesByUserName(),GetAllInactiveProfiles()都是根据条件检索个性信息用的,实现相对简单


二。实现

1.新建立一个项目,然后在App_Data中,添加一个SQL数据库,建立一个表,命名为test1,在表中建立以下字段
UserName  varchar 主键
A int (本次实验中自定义的一个字段)
B varchar (本次实验中自定义的一个字段)
IsAnonymous bit 是否为匿名用户
LastActivityDate datetime 最后访问时间
LastUpdateDate datetime 最后更新时间

2.导入sqlCtrl类(此类专门用于操作数据库,源码中有)


3.接下来是关键示例代码

 

Code

 

4.修改Web.config文件

Code

 

5.接下来就可以直接使用了

 

 

Code

 

 

源码下载 

posted on 2009-03-04 13:42  RealDigit  阅读(3179)  评论(18编辑  收藏  举报