-
Notifications
You must be signed in to change notification settings - Fork 213
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix. 修复uid与qq号对应关系不刷新的问题 #760
base: master
Are you sure you want to change the base?
Conversation
之前我也遇见过此问题但是没有去研究,顺着楼主的思路研究了一下也提出点意见,先理清下思路: 而 第二处调用是更新面板操作,这里决定调用 这里的关键在于 由上,这段逻辑本身是没问题的,唯一的问题是在都没有绑定ck的情况下,第一个绑定的用户即使解绑了,数据库中该uid的数据里qq的指向仍然是他,这才是真正有问题的地方。 楼主的修改是可以解决排名中显示的qq头像错误的问题的,但是也会导致其他问题: 综上,其实最大的问题是在第一个绑定的用户解除绑定时没有同步解除数据库中 最后感谢楼主的这个pr和讲解,帮助我理清了这个问题。 |
您好,为方便后续沟通,我向您的邮箱发了一封邮件。我注意到该邮件尚未被查看,方便的话能否查阅并回复一下,谢谢。 |
刚看了看邮箱,发现在垃圾邮箱里的 😂 已回复 |
请问pr有在准备继续吗,如果没时间的话要不我直接给崽底层pr了?已经过挺久了。 |
此前遇到了一个bug:当uid被其他人抢先绑定之后,即使对方取消绑定,无论如何操作,排行榜等处显示的头像仍然会显示对方的头像。
经过分析,该bug问题在于redis数据库
miao:rank:uid-info:{uid}
内存储的qq号不刷新,而更新该处数据库的方法为setUidInfo
。该方法只在两处被调用,其一:并不会实际更新数据库,其二来自本pr修改的
render
函数,其首先定义了isSelfUid
:然后传入
setUidInfo
:内部更新qq号逻辑如下:
因此,qq号当前仅当当前uid在
getCkUidList
返回的uid列表中时会被更新。虽然getCkUidList
函数名已经暗示了其用途,但鉴于是第一次接触本项目代码,确认了一下其逻辑:因此显然,
getCkUidList
只会返回绑定了cookie的uid。综上,bug的原因在于,只要没有绑定过cookie,只要被人绑定过的uid,其uid-qq对应关系就不再会发生改变,故做出此修改及pr。
此外,本修改不会影响系统健壮性与安全性,毕竟初始的uid-qq对应关系本就是无权鉴的,且本修改涉及的变量均只影响
setUidInfo
函数的uidType
参数,该参数只涉及对应qq号的更新逻辑。