5

我有一个应用程序挂钩到单个数据库。Asp.net覆盖在运行时的成员资格设置(asp.net mvc)

该应用程序现在需要挂钩到多个数据库。我们想要做的是使用相同的应用程序/域/主机名/虚拟目录给用户在登录屏幕上的选项,选择他们想要连接到的“应用程序/数据库”。

每个数据库都有应用程序表/数据/特效/ etc以及aspnet成员资格/角色的东西。

当用户输入用户名/密码并选择(选择列表)应用程序时,我想根据所选应用程序数据库验证用户。

目前,成员资格服务的数据库连接字符串保存在web.config中。有什么办法可以在登录时覆盖这个吗? 另外,我还需要“记住我”功能才能顺利进行。当用户在5个小时内回到应用程序时,这是如何工作的......这个过程应该能够识别用户和应用程序并适当地登录。

回答

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?很容易做,然后你完全控制发生了什么。我相信你会想出另一个默认提供者不适用的自定义场景。

AFAIK记住我的功能应该正确地工作,只要用户不删除他们的cookies即可。