在sqlmembership提供程序中设置Facebook用户名

时间:2010-12-23 01:28:58

标签: c# asp.net-mvc facebook membership-provider

我正在使用Facebook连接并在用户登录后注册用户(我将其添加到我的数据库中)。

我正在使用sqlmembership提供程序。目前我正在获取Facebook用户的全名并将其用作用户名。但我遇到的问题是如果2个人有相同的名字,它将不会注册第二个用户。

我该如何处理用户名?我想添加Facebook ID然后在网站中使用用户名时截断?有点难看,但想不出更好的方法。

有什么建议吗?

4 个答案:

答案 0 :(得分:0)

你需要facebook ID;您可以将其存储在会话中,或创建自定义IPrincipal和/或IIdentity并将其与用户信息一起存储。

HTH。

答案 1 :(得分:0)

考虑创建一个自定义Sql成员资格提供程序,我自己使用该方案用于我的应用程序,这样你就可以对你想要存储数据的方式进行精细控制。 看看

http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider

&安培;

http://www.asp.net/general/videos/how-do-i-create-a-custom-profile-provider

答案 2 :(得分:0)

为什么要使用可能会改变的东西(人名)。人们结婚,或为自己设置愚蠢的绰号,有些人经常更换。

为什么不使用ID?你总是可以创建另一个表(在SqlMembership之外)来存储该用户的最新名称

答案 3 :(得分:0)

我刚才这样做了。

这是我的表:

FacebookUniqueID BIGINT, PRIMARY KEY
FacebookEmail    NVARCHAR(100), NULL

我还存储了其他用于审计的内容,但这是关键信息。

现在,您将始终获取Facebook用户ID。但是你不会总是获取用户的电子邮件地址 - 因为他们可以拒绝访问 - 因此我允许NULL。

我存储电子邮件的原因是,唯一ID不足以将用户与系统中的用户结合。

在SqlMembershipProvider中,用户名通常是电子邮件。所以我使用“FacebookEmail”字段链接用户。

如果他们不允许您使用他们的电子邮件地址,您将无法执行单点登录(例如,当他们通过Facebook身份验证时自动将他们登录到您的网站)。

但至少如果他们最终授予您许可,您可以更新数据库中的电子邮件字段,然后执行单点登录。