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

时间:2010-04-12 23:25:48

标签: asp.net asp.net-mvc asp.net-membership membership-provider

我有一个连接到一个数据库的应用程序。

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

每个数据库都有App tables / data / procs / etc以及aspnet成员资格/角色。

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

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

2 个答案:

答案 0 :(得分:5)

唯一可行的方法是通过反射更改conn字符串:

// 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

为什么不实施自己的成员提供者呢?很容易做到,然后你完全控制发生的事情。我相信你会想出另一个自定义场景,默认提供商不能正常使用。

AFAIK记住我的功能应该完全按照你的描述工作,只要用户不删除他们的cookie。

答案 1 :(得分:0)

以下是指向您的会员提供商使用多个连接字符串的示例的链接。

ASP.NET Forum - Multiple Providers