在运行时覆盖 Asp.net 成员资格设置(Asp.net MVC)

5
我有一个连接到单个数据库的应用程序。
现在这个应用程序需要连接到多个数据库。我们想要做的是,在使用相同的应用程序/域名/主机名/虚拟目录的情况下,让用户在登录屏幕上选择他们想要连接到的“应用程序/数据库”。
每个数据库都有应用程序表/数据/过程等以及aspnet成员身份/角色内容。
当用户输入用户名/密码并选择(选择列表)应用程序时,我希望对所选应用程序的数据库进行用户验证。
目前,成员服务的数据库连接字符串保存在web.config中。是否有任何方法可以在登录时覆盖它? 此外,我需要“记住我”功能也能够顺畅工作。当用户在5小时后回到应用程序时,这个过程应该能够识别用户和应用程序,并适当地登录。
2个回答

5

唯一的可能是通过反射更改连接字符串:

// Set private property of Membership provider.FieldInfo connectionStringField 
= GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic);
        connectionStringField.SetValue(this, connectionString);

找到这里: http://forums.asp.net/p/997608/2209437.aspx 为什么不实现自己的MembershipProvider?这很容易做到,然后你完全掌控发生的情况。我相信你会遇到另一个默认提供程序无法很好处理的自定义场景。
据我所知,只要用户不删除他们的cookie,记住我功能应该正常工作,就像你描述的那样。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接