我正在使用开箱即用的 Asp.Net Membership 功能来处理我的用户管理和角色管理。
我的应用程序由每个客户端的单个数据库组成,每个数据库都有自己的成员资格提供者和角色提供者。
但是,有些用户为多个客户工作,我想使用一个登录名并让他们选择查看哪个客户。我通过使用存储所有用户名和他们有权访问的客户端的关系的中间数据库来完成所有设置以促进这种“客户端切换”。我还设置了它,因此对一个数据库中的用户的任何更新都会更新其他数据库中的所有相应用户。所有这些逻辑都运行得很好,除了我似乎无法弄清楚如何告诉 ASP.Net 更改为特定的 MembershipProvider 并使用那个。
我认为我应该使用的过程如下(当用户在客户端下拉列表中切换客户端时):
- 注销当前用户
- 告诉 ASP.Net 使用哪个会员提供程序(根据下拉菜单中选择的客户端选择)
- 使用所选客户的会员提供程序登录当前用户,并刷新/重定向到他们更改下拉列表时正在查看的页面
我知道如何获取对特定成员资格提供程序 (Membership.Providers[MembershipProviderName]) 的引用,但我找不到任何有关如何告诉 ASP.Net 更改其成员资格提供程序的信息。我什至不确定 asp.net 登录控件是如何在后台执行此操作的——这可能会帮助我解决所有这些问题。
我一直在搜索 SO 和网络一段时间,除了一些人们试图修改其 Web.config 中 Providers 元素的 DefaultProvider 属性的线程之外,似乎找不到太多关于这样做的信息。