为什么用户名会由 cola 变成 cola1?

RT,社区为什么要强制用户名不能重复呢,感觉加一个数字好蠢。

讨论数量: 27

你是开玩笑吗,,,用户名重复怎么登录,,,,

4年前 评论

id name 密码
1 cola pwd111
2 cola pwd222

如果 cola 输入的密码匹配 pwd111,就把他当做 id=1 的用户处理;
如果 cola 输入的密码匹配 pwd222,就把他当做 id=2 的用户处理;
否则就告诉 cala:密码或用户名错误。
这样就实现了重名登录模式了。

4年前 评论
panda-sir 4年前
史沟飞 4年前
zhaiduting (作者) 4年前
zhaiduting (作者) 4年前
史沟飞 4年前
zhaiduting (作者) 4年前
Aaron 4年前
sethhu 4年前
zhaiduting (作者) 4年前
zhaiduting (作者) 4年前
Aaron 4年前
zhaiduting (作者) 4年前
LOST 4年前
zhaiduting (作者) 4年前

不是可以修改的吗?

4年前 评论
playmaker

要是名子重复 不让注册呗 为啥自定义, 有些歧义?

4年前 评论

用户名字段是unique的吧 没法重复

4年前 评论

我倒是觉得【重名登录】的情况的确可行,现实生活中就是这样!重名的人多得去了。如果允许重名登录,那大家就可以不用担心自己的名字已经被注册啦……张三,直接输入自己的全名拼音zhangsan即可登录,简直不要太爽!如果非得搞个zhangsan222去注册,肯定比较失望……那是谁?把我优雅的名字zhangsan给抢掉啦?

4年前 评论

@zhaiduting 用来登录的字段需要唯一性,再不然你用两个字段来登录?对用户也不友好啊

4年前 评论
zhaiduting 4年前

如果name字段不允许重复,可以另外加个允许重复的 nickname 字段。允许用户使用 nickname 登录,这效果跟允许【重名登录】是一样的。如果发现登录时使用的是11位数字,基本判断在用手机号登录;如果发现是xxx@yy,基本判定用户在用邮箱登录;否则认为用户在使用 nickname 登录。

4年前 评论

@zhaiduting 只有唯一性的字段才能直接登录

4年前 评论
zhaiduting 4年前

重名太多的情况也一样可以解决,设置一个阈值。最多允许200个人重名!超过的,对不起,只能改名注册了。
或者对nickname与加密后的密码建立联合索引,貌似一样可以高效运转

4年前 评论

你用重复字段登录 系统如何区分用户? 只有唯一性的字段才能直接登录

4年前 评论
zhaiduting 4年前

你注册cola的时候,首先在数据库查出username='cola'的集合。

然后遍历这个集合,逐个用Hash::check()校验一次你注册的密码是否跟集合内的密码一样...

cola用户修改密码的时候也要做一次这个校验...

凭什么我123456这个『优雅』的密码被抢掉啦?

我选择username唯一好了 :smile:

4年前 评论

id、昵称、密码、隐秘字段

id 唯一
隐秘字段是由【昵称拼接密码后加密】生成的,也是唯一的(加密过程是在服务器端进行的)

所谓的重名登录,无非就是去数据库里查找一下这个【隐秘字段】是否存在,有且匹配则代表登录成功。


注册 cola 的时候,不用检索集合,而是检索隐秘字段是否存在,如果根本就不存在【cola拼接密码再加密一次】的值,代表可以注册。

有了这个唯一的【隐秘字段】,几乎可以不用给重名个数设置上限了

4年前 评论
Summer 4年前
Summer 4年前
zhaiduting (作者) 4年前

恭喜你发明了一个新的密码加密函数了哦!希望这个加密函数足够安全以致你被脱库的时候,用户密码不会泄露 :smile:

4年前 评论
zhaiduting 4年前

用户密码相同是再普遍不过的事了 如果我设了3次密码都不行 估计我就放弃注册了 说不定两次我就放弃
注册用户名不能相同,这已经是约定俗成的,很好理解,但是密码无效这回事估计会懵了吧

4年前 评论
zhaiduting 4年前

会存在这样的情景
用户A :账户:zhangsan 密码 aa
用户B: 账户:zhangsan 密码bb
万一哪天A用户想改密码,改成bb,怎么提示都不合适

4年前 评论
zhaiduting 4年前
zhaiduting 4年前

@zhaiduting 全新思路... 学到了... 虽然不太合规,但确实是个骚操作...

4年前 评论
zhaiduting 4年前

重名登录的好处很明显:大家不用抢着去注册。我叫张三,只要我愿意,我始终都可以使用 zhangsan 去注册(不用搞成 zhangsan222)。据我所知,重名登录功能目前在网络里应该没有被实现过。但并不代表不可实现……

4年前 评论

那么问题来了,忘记密码的时候你选择哪个zhangsan来忘记呢?

4年前 评论
zhaiduting 4年前
Mentality (作者) 4年前
zhaiduting 4年前

如果重复了,那 @ 功能估计就不太好处理。上面提到的方案虽然可行,但是感觉由这个重名登录的功能带来的成本太大了。

4年前 评论
zhaiduting 4年前

开发重名登录功能所需的成本是一方面,主要问题是重名登录的确有风险。10个叫张三的人重名登录或许不明显,但是如果有1000个都叫张三的人来登录,那密码重复的几率就会大幅提升……这便是一大风险。目前我想不到好方法,最多也就是设置一个重名上限,比如最多允许20个 人重名。如果有第21个叫张三的来注册,对不起,请更换用户名。

4年前 评论

【解决重名登录的安全隐患问题,较笨拙的方法
假设有1000个人都叫张三,他们都使用zhangsan进行注册,这1000个人的密码有可能出现重复。
为解决1000个张三的密码冲突问题,可以对【重名者的密码】给出限定条件。除第一个注册的人以外,另外999个张三的密码必须包活注册时使用的11位手机号。或者干脆就默认密码为:11位数字的手机号(张三当然可以再任意添加若干位字符以加强密码的安全性)。
由于1000个张三的手机号是不相同的,因此重名者的密码必定不同,加密运算之后的结果也必定不同。
如果重名者不认可这个密码,觉得太麻烦,当然可以改名注册。

【重名登录的运行效率问题】
由于同名者的密码已经存在唯一性了(限定于1000个张三之间),直接查找这个唯一密码加密运算后的结果即可(这时候就不需要额外的“隐秘字段”了)

【手机号的隐私问题】
可以将手机号进行加密计算后保存在数据库里,暂定字段名称为隐秘手机号

【密码找回问题】
当用户采用手机找回密码时,要求提供手机号,将手机号加密计算并与数据库里的隐秘手机号比较,结果一致则发送验证码,否则提示用户手机号错误。

我一块钱注册一个域名,之后总会收到一些推销电话,有的还是域名注册公司打来的,这就证明手机号保护力度不够,对手机号加密也是有必要的。(这里扯远了)

4年前 评论

对于恶意的冒名顶替问题,这个其实在微信诈骗里就已经存在了。头像换成你的,微信昵称改成你的,然后……这就需要微信好友加强防范了,涉及金额的问题一定要电话确认。当然还有其他识别的办法……

对于 @zhangsan 的处理,全部显示为 @zhangsan1001、 @zhangsan1002、 @zhangsan1003。
这里的1001、1002和1003不一定就是 zhangsan 的真实 id 编号。系统完全可以对真实 id 进行运算后显示在页面。

为美观、简单起见,也可以不用添加这个【伪 id】。此时 @zhangsan 命令无效(因为有重名),但是只要你点击zhangsan旁边的回复按钮,则始终能正确回复(因为系统是按唯一id在回复的)。

4年前 评论

用户名重复再实际中效果是不好的,比如在一个社交网址上,明星胡歌的用户名是‘胡歌’,当允许重复时,即还有其他用户的用户名也是‘胡歌’,‘胡歌’这个用户名发出的消息,其他人将无法确定是哪个‘胡歌’,就会存在歧义。

4年前 评论
zhaiduting 4年前
zhaiduting 4年前

微信QQ名字可以允许重复。问题是人家不用来做登录账号呢~

4年前 评论

@zhaiduting 可是你怎么知道是 @ 的哪个呢,比如我有个小伙伴的名字是 zhangsan,我是不是还要找到他隐藏的 zhangsan + unique_id (随便什么规则生成的唯一标识)?

4年前 评论
zhaiduting 4年前
zhaiduting 4年前
zhaiduting 4年前
huazi (作者) 4年前
zhaiduting 4年前
huazi (作者) 4年前
zhaiduting 4年前
huazi (作者) 4年前

统一回复哈,重名登录的确有安全问题:1000个张三,如果都用zhangsan去登录,密码出现重复的几率会很大。如果强行要求重名的zhangsan使用【各自的手机号+任意字符】的形式作为密码,那还不如干脆让张三使用手机号登录……但又找不到更好的方法,于是【重名登录】这一操作,恐怕是没办法实现了。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!