目前我们有几个数据库,每个数据库都有自己的aspnet成员资格表。我们想将所有成员资格集中到一个数据库中。例如,一个主要的登录页面,在那里他们将指定数据库、用户名和密码。然后我们会检查集中式数据库并验证他们的身份,并根据他们在文本框中输入的数据库名称将他们重定向到他们的帐户。
最佳方法是什么?可能有多个用户名在不同的数据库中相同,这是我的挑战。
目前我们有几个数据库,每个数据库都有自己的aspnet成员资格表。我们想将所有成员资格集中到一个数据库中。例如,一个主要的登录页面,在那里他们将指定数据库、用户名和密码。然后我们会检查集中式数据库并验证他们的身份,并根据他们在文本框中输入的数据库名称将他们重定向到他们的帐户。
最佳方法是什么?可能有多个用户名在不同的数据库中相同,这是我的挑战。
// ValidateUser method doesn't take any additional parameter
public bool ValidateUser(string username, string password)
因此,您需要实现自己的验证方法来验证合并数据库中的用户。
如果您正在重定向到不同的网站,请注意表单身份验证的限制。例如,它无法将身份验证cookie从www.one.com传输到www.two.com。
你能假设在database1中的"user123"和database2中的"user123"是同一个人吗?
如果可以,你可以像DJ KRAZE建议的那样进行合并。 如果不行,你就必须为重复的用户名创建新用户。您可以编写相当简单的SQL脚本来完成此操作,只需将数字附加到ID末尾即可。
例如.... 在数据库1中找到了"john",则创建"john1"用户。据我记得,aspnet_membership数据库附带了一组非常强大的存储过程,用于创建用户等,并创建所有正确的表条目。如果您最终选择了这条路,请务必使用它们,而不是尝试自由插入/更新语句。
我相信你可以在登录控件中选择要连接的数据库。所以创建一个下拉菜单,让用户可以选择要连接的数据库,然后将该选择作为你的数据库。参考http://forums.asp.net/t/1403132.aspx/1上的第4点。 这个选择可以是指定数据库的连接字符串名称。