网站大,用户多,如何唯一识别用户

Posted

技术标签:

【中文标题】网站大,用户多,如何唯一识别用户【英文标题】:large website, many users, how to identify users uniquely 【发布时间】:2011-03-03 04:24:51 【问题描述】:

大多数网站都要求用户名是唯一的。我注意到 SO 允许重复的用户名,当你有一个像 SO 这样的非常大的网站时这可能会很好(我猜他们这样做是为了避免像 chris123、chris213、chris321 这样的用户名开始让自己看起来很困惑)。但是,允许重复的用户名通常是一个相对较差的实现吗?从具有相同用户名的 2 个用户那里获得 2 个答案可能会令人困惑。

那么对于拥有大量需要相互交互的用户的大型网站,还有哪些其他选择?我在想一些甚至不是基于用户名的东西,但不确定是什么。

【问题讨论】:

我个人认为,任何规模的网站都使用不唯一的可见名称是一种不好的做法。 对你的问题有点困惑!其他选项意味着什么...? @Shoban 我的意思是一种选择是要求唯一的用户名,你最终会得到 chris123 和 chris132 和 chris321 等等。另一种选择是只允许重复 chris 和 chris 和 chris。在我看来,这两种选择对于大量用户来说都开始变得棘手。人们在大型网站上是否还有其他用于此类标识的选项,甚至可能根本不是基于用户名的选项,或者是用户名和其他内容的组合。甚至不确定我知道什么。也许有人已经找到了一个不错的选择。 【参考方案1】:

虽然拥有不同的用户名(通常用于登录)几乎是绝对要求,但没有理由要求显示别名必须是唯一的,因为有可识别的方法来识别使用系统。这是讨论论坛中相当普遍的做法,因为那里确实有很多“Jeff Smith”。例如,SO 使用用户的声誉并链接回他们的个人资料作为区分所涉及的实际用户的机制。但是,登录本身必须具有某种形式的唯一性。

作为补充说明我的评论:

天空(和您的想象力)确实是如何唯一识别别名的限制。在标准配置文件链接之外,您可以添加其他独特的特征(如果您希望别名相对明确)。举个我没见过的例子:在重新命名别名时使用独特的字体或颜色......蓝色的圣文杰夫史密斯与黄色的宋体杰夫史密斯不同(只是一个示例方法)

【讨论】:

+1 但是了解登录唯一性的必要性,并且识别唯一性的好处是我在问题中提出的观点,所以问题是:我必须识别哪些其他替代方案除了 chris123、chris321、chris231 之外的唯一用户?看起来不太好 让用户识别自己,但添加其他独特的数据集(独特/随机头像、声誉点、个人资料链接、/.style userIds)是最常见的。 我修改了我的答案以提供一个示例......超过了 5 分钟才能进入此评论,我相信它在那里得到了更好的反映。对于downvoters,请提供cmets。【参考方案2】:

过去我在自己的网站上遇到过这种情况,我发现最好的方法是通过电子邮件地址来识别用户。

这是一个非常简单的方法,因为它允许多个用户名(或名称,就像 Facebook),并且您始终可以通过他们在数据库中的用户 ID 来识别唯一性,并在网站上显示,甚至可能显示他们的用户名、头像,可能还有他们的位置。

示例:

chris123 (AZ) - chris123@example.com
chris123 (WA) - chris123.west@example.com
chris321 (AZ) - chris321@example.com

【讨论】:

+1 但我怀疑电子邮件是个好主意,因为我可以使用 chris123 并添加 gmail.com、yahoo.com 等和垃圾邮件。 真的没有万无一失的方法来防止这种情况,就像在其他所有网站上一样。我可以在任何网站上创建自己的多个实例和垃圾邮件,包括 SO(但我不会)。减少垃圾邮件数量的唯一方法是使用 SMS 激活服务,只允许连接一个电子邮件和电话号码。回到主题,看看 XBOX live,他们有独特的玩家标签。也许最好还是坚持一些经过验证的真实的事情,IMO。【参考方案3】:

我相信您有两个不同的问题;授权和个性化。

大多数网站都会坚持使用电子邮件来对某人进行唯一授权,因为这些已经保证是唯一的。 SO 使用开放式身份验证,这意味着我很长时间没有指定“用户名”来与他们进行身份验证。我的OpenID 有我的电子邮件和密码,并处理 SO 的授权部分。

另一部分是个性化,如果他们愿意的话,它肯定应该允许用户选择重复的名字。这需要与身份验证详细信息相关联,并且通常使用站点专门生成的单独唯一编号来完成。然后,这将链接用户名以进行授权和要显示的用户名。我猜这也是用户存储在任何数据库结构中的主键的一部分。

如果您查看每个个人资料名称的链接,您会在 url 中看到一个数字,这是您在网站上的唯一标识,并将 twitter 与您的电子邮件/用户名联系起来,以便通过数字 629665 登录。您的用户页面链接是https://***.com/users/629665/twitter

虽然我可以清楚地看到您在网站上选择的显示名称和唯一 ID,但我不知道您的授权身份,您可以将其保密并有助于确保您的安全。

【讨论】:

【参考方案4】:

--> 选择用户名,不是什么好主意。 --> 可能你可以输入电子邮件 ID 和用户名。

--> best is to Generate a unique ID for every user bro.

【讨论】:

【参考方案5】:

嗯,你的问题很模糊,我已经编辑了标题以使其更清楚。

毫无疑问如何识别用户。如果您查看 *** 用户 linfo 链接,您会注意到旧的自动递增唯一编号。没问题。

因此,我想您的问题是一个用户如何识别另一个用户。我认为这没什么大不了的,因为冲突非常罕见,而且总是可以通过用户声誉和 ID 来判断。

【讨论】:

以上是关于网站大,用户多,如何唯一识别用户的主要内容,如果未能解决你的问题,请参考以下文章

解析 PHP 中 session 的实现原理以及大网站应用应该注意的问题

如何识别电脑的唯一性

如何识别设备(唯一标识符、CFUUIDRef、设备令牌?)

无法唯一识别设备? [复制]

如何使用 PHP GD 从散列信息中生成唯一图像?

iPhone Google Analytics - 识别唯一用户