如何用提供程序实现角色控制

首先,要实现自己的角色提供程序首先要创建一个继承于System.Web.Security命名空间中抽象类RoleProvider的类。RoleProvider继承与System.Configuration.Provider下的ProviderBase基类,因此也必须实现ProviderBase类的成员。下面列出了必须实现的从ProviderBase和RoleProvider抽象类继承的属性和方法。并提供了相应的属性和方法的说明。
ProviderBase成员
Initialize方法             接受提供程序的名称和配置设置的NameValueCollection作为输入,用于设置提供程序的属性其
                              中包括特定与实现的值和配置文件的
RoleProvider的实现方法

成员 说明

ApplicationName 属性

使用配置文件 (Web.config) 中指定的角色信息的应用程序的名称。ApplicationName 存储在带有相关用户信息的数据源中,并在查询用户信息时使用。有关更多信息,请参见本主题后面的有关 ApplicationName 的部分。

如果未明确指定,则此属性是读写,并且默认值为 ApplicationPath

AddUsersToRoles 方法

接受用户名列表和角色名列表作为输入,然后将指定的用户与在已配置的 ApplicationName 的数据源中指定的角色关联。

如果对于已配置的 ApplicationName 不存在任何指定的角色名或用户名,则应引发 ProviderException

如果任何指定的用户名或角色名为空字符串,则应引发 ArgumentException,如果任何指定的用户名或角色名为 null(在 Visual Basic 中为 Nothing),则应引发 ArgumentNullException

如果数据源支持事务,则应在事务中包含每个添加操作,并且如果添加操作失败,则应回滚事务并引发异常。

CreateRole 方法

接受角色名作为输入,并将指定的角色添加到已配置的 ApplicationName 的数据源中。

如果对于已配置的 ApplicationName 已存在指定的角色名,则应引发 ProviderException

如果指定的角色名为空字符串、包含逗号或超过数据源所允许的最大长度,则应引发 ArgumentException;如果指定的角色名为 null(在 Visual Basic 中为 Nothing),则应引发 ArgumentNullException

DeleteRole 方法

接受角色名以及一个指示如果仍有用户与该角色关联时是否引发异常的布尔值作为输入。DeleteRole 从已配置的 ApplicationName 的数据源删除指定的角色。

如果 throwOnPopulatedRole 参数为 true,且由角色名参数标识的角色具有一个或一个以上成员,则引发 ProviderException,并且不删除该角色。如果 throwOnPopulatedRole 参数为 false,则不论该角色是否为空,都会删除角色。

从数据源删除角色时,确保也删除用户名与已配置的 ApplicationName 的已删除的角色之间的任何关联。

如果指定的角色名不存在,或为空字符串,则应引发 ArgumentException。如果指定的角色名为 null(在 Visual Basic 中为 Nothing),则应引发 ArgumentNullException

FindUsersInRole 方法

接受角色名和要搜索的用户名作为输入,并返回角色中的用户列表,其中的用户名包含与为已配置的 ApplicationName 提供的 usernameToMatch 匹配的部分。根据数据源提供通配符支持。根据用户名按字母顺序返回用户。

如果数据源中不存在指定的角色名,则建议引发 ProviderException

GetAllRoles 方法

从数据源返回角色名的列表。仅检索指定的 ApplicationName 的角色。

如果已配置的 ApplicationName 不存在任何角色,则应返回不带任何元素的字符串数组。

GetRolesForUser 方法

接受用户名作为输入,并从数据源返回与指定的用户关联的角色名。仅检索已配置的 ApplicationName 的角色。

如果已配置的 ApplicationName 对于指定用户不存在任何角色,则应返回不带任何元素的字符串数组。

如果指定的用户名为空字符串,则应引发 ArgumentException。如果指定的用户名为 null(在 Visual Basic 中为 Nothing),则应引发 ArgumentNullException

GetUsersInRole 方法

接受角色名作为输入,并从数据源返回与角色关联的用户名。仅检索已配置的 ApplicationName 的角色。

如果对于已配置的 ApplicationName 不存在指定的角色名,则应引发 ProviderException

如果没有与已配置的 ApplicationName 的指定角色关联的用户,则应返回不带任何元素的字符串数组。

如果指定的角色名为空字符串、包含逗号或超过数据源所允许的角色名的最大长度,则应引发 ArgumentException。如果指定的角色名为 null(在 Visual Basic 中为 Nothing),则应引发 ArgumentNullException

IsUserInRole 方法

接受用户名和角色名作为输入,并确定当前登录用户是否与已配置的 ApplicationName 的数据源中的角色关联。

如果对于已配置的 ApplicationName 不存在指定的角色名或用户名,则应引发 ProviderException

如果指定的用户名或角色名为空字符串,则应引发 ArgumentException,如果指定的用户名或角色名为 null(在 Visual Basic 中为 Nothing),则应引发 ArgumentNullException

RemoveUsersFromRoles 方法

接受用户名列表和角色名列表作为输入,然后删除指定用户与在已配置的 ApplicationName 的数据源中的指定角色的关联。

如果对于已配置的 ApplicationName 不存在任何指定的角色名或用户名,则应引发 ProviderException

如果任何指定的用户名或角色名为空字符串,则应引发 ArgumentException,如果任何指定的用户名或角色名为 null(在 Visual Basic 中为 Nothing),则应引发 ArgumentNullException

如果数据源支持事务,则应在事务中包含每个删除操作,并且如果删除操作失败,则应回滚事务并引发异常。

RoleExists 方法

接受角色名作为输入,并确定在已配置的 ApplicationName 的数据源中是否存在该角色名。

如果指定的角色名不存在,或为空字符串,则应引发 ArgumentException。如果指定的角色为 null(在 Visual Basic 中为 Nothing),则建议引发 ArgumentNullException


posted @ 2008-07-14 23:02  ~洛书~  阅读(256)  评论(0编辑  收藏  举报