我会创建一个自定义的RoleProvider。此角色提供程序是唯一需要在web.config中注册的提供程序。
在初始化方法中,您可以在代码中加载您想要的任何提供者,并将其存储为自定义提供者的私有成员。
从那时起,您的角色提供者只是您所选提供者的代理。
例子:
public class CustomRoleProvider : RoleProvider
{
//The real role provider;
private RoleProvider _provider;
public CustomRoleProvider()
{ }
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
{
base.Initialize(name, config);
//In here initalise your Role Provider at run time
//This is just demo code... obviously you would do something a little more
//intelligent
SqlRoleProvider provider = new SqlRoleProvider();
provider.Initialize("sql", config);
_provider = provider;
}
public override void AddUsersToRoles(string[] usernames, string[] roleNames)
{
_provider.AddUsersToRoles(usernames, roleNames);
}
public override bool DeleteRole(string roleName, bool throwOnPopulatedRole)
{
return _provider.DeleteRole(roleName, thrownOnPopulatedRole);
}
//other proxy methods would also be here...
}
您可以看到如何扩展它以支持多个提供者,并在运行时选择可以使用的提供者。
那能回答你的问题吗?