代码之家  ›  专栏  ›  技术社区  ›  Brian Genisio

如何在运行时设置角色提供程序?

  •  0
  • Brian Genisio  · 技术社区  · 15 年前

    我需要能够在运行时设置RoleProvider。我甚至不知道它来自哪里——我正在使用一些松散耦合的依赖注入——所以我甚至不能在web.config文件中定义它。

    如何在运行时设置角色提供程序?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Gavin Osborn    15 年前

    我会创建一个自定义的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...
    }
    

    您可以看到如何扩展它以支持多个提供者,并在运行时选择可以使用的提供者。

    那能回答你的问题吗?

    推荐文章