asp.net – 从AD成员资格提供程序运行时切换到SQL成员资格提供程
发布时间:2020-12-16 09:45:54 所属栏目:asp.Net 来源:网络整理
导读:在我的asp.net应用程序管理功能中,我正在尝试组合AD身份验证和表单授权来创建用户,角色和将用户分配给角色等.我已在我的web.config中配置MembershipADProvider和AspNetSqlMembershipProvider,并将MembershipADProvider作为默认值.用户使用AD身份验证登录后,
在我的asp.net应用程序管理功能中,我正在尝试组合AD身份验证和表单授权来创建用户,角色和将用户分配给角色等.我已在我的web.config中配置MembershipADProvider和AspNetSqlMembershipProvider,并将MembershipADProvider作为默认值.用户使用AD身份验证登录后,我需要切换/分配我的成员资格对象以使用AspNetSqlMembershipProvider,以便从成员对象(来自dbo.aspnet_Users表)中获取所有用户.如何在运行时切换提供程序?在搜索到这个问题后我尝试了不同的方法,到目前为止,这些方法似乎都不适用于我.
以下是我尝试过的几种方法: 1. foreach(MembershipProvider mp in Membership.Providers) ????????????{ ????????????????if(mp.Name ==“MembershipADProvider”) ????????????????{ ????????????????????Membership.Providers.Remove(MembershipADProvider“); ????????????????????MembershipUserCollection users = Membership.GetAllUsers(); ????????????????????ddlUsers.DataSource = users; ????????????????????ddlUsers.DataBind(); ????????????????????打破; ????????????????} ????????????} Membership.Providers.Remove(MembershipADProvider“); – 不起作用,因为它不受支持.. >我无法使用值设置Membership.Provider 如果有人成功实施,或者如果这是一个看似合理的方法,请告诉我.谢谢! 解决方法
您可以将一个显式提供程序传递给您的代码,而不是直接依赖于Memebership(它只包含在配置中标记为默认值的那个).没有必要在运行时交换它们,想一想这会如何影响线程安全性.
所以而不是说Membership.GetAllUsers();你会做类似的事情(我没有编译器): public UserSerivce : IUserService { private MembershipProvider provider; public UserService(MembershipProvider provider) { this.provider = provider; } public IEnumerable<MembershipUser> GetUsers() { return provider.GetAllUsers(); } public void DoSomethingElseUseful() { ... } } 然后将其用于特定提供商: var service = new UserService(Membership.Providers["mySqlMembershipProvider"]); var users = service.GetUsers(); 或者如果使用AD特定代码: var service = new UserService(Membership.Providers["myADMembershipProvider"]); var users = service.GetUsers(); 以这种方式使用DI也有助于保持代码可测试性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET Core中使用xUnit进行单元测试
- ef-code-first – ASP.NET Identity – 将用户ID主键默认类
- IE不保存asp.net身份验证令牌/ cookie
- 框架-.NET:ASP.NET MVC
- 为什么我的客户端去服务器来检查在使用ASP.NET MVC包时是否
- asp.net-mvc-3 – 扩展MVC3剃刀Html.LabelFor添加css类
- 如何在ASP.NET中的Web应用程序之间共享用户控件?
- asp.net-mvc – Visual Studio 2013持有的App_global.asax.
- ASP.NET Core 下自定义权限验证
- asp.net – 如何在IIS上配置Web部署发布功能,以便开发人员可