繁体   English   中英

AspNet成员资格-集中登录

[英]AspNet Membership - Centralizing Logins

现在我们有几个数据库,每个数据库都有自己的aspnet成员表。 我们希望将所有成员资格集中到一个数据库。 例如,一个主登录页面,他们将在其中指定数据库,用户名和密码。 然后,我们将检查集中式数据库,并根据他们在文本框中输入的数据库名称进行身份验证并将其重定向到他们的帐户。

最好的方法是什么?在不同的数据库中可能有多个相同的用户名,这是我的挑战。

ASP.Net成员资格具有“ 应用程序”表 只要您为不同的网站使用不同的应用程序名称,就可以将它们合并到一个大数据库中。 复制用户ID(作为唯一ID存储)的机会非常低。

用户登录时,您需要以下3个字段-

  1. 应用程序(可以是DropDownLis)
  2. 用户名
  3. 密码

创建自己的验证

您不能使用自定义成员资格提供程序来验证仅接受用户名和密码的用户。

// 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,选择可以是指定数据库的连接字符串名称。

根据我的经验,您能做的最好的事情是在源数据库中为用户名添加重复的前缀,并将合并委托给最终用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM