我正在构建一个结合了MySQL的node.js后端的应用程序。在数据库中,我有一个“用户”表,其中包含有关用户的信息。当前,这些用户具有带有主键的常规ID,因此我的用户ID为0、1、2、3,...
我现在面临的问题是我使用JSON Web令牌对用户进行身份验证并将userID存储在有效负载中。例如,我的有效负载如下:
userID: 173
userName: PennyWise
userLevel: user
我现在想知道是否应该将用户ID更改为UUID。我读到这可能会降低插入速度,但这只会在新用户注册后才会发生,因此我认为这不应该是一个大问题(它不像是一张桌子上满是100个插入内容的帖子每天)。
我要这样做的原因是,如果JWT受到破坏,并且签名它的秘密也受到破坏,则数据可能会损坏,只需将userID更改为122,然后将该用户更改将可以访问用户ID 122而不是173的所有数据。
我并不是说会发生这种情况-我使用的令牌有效期为21天(移动应用程序),并检查发布日期是否早于3个小时以进行刷新(使用刷新令牌),然后针对该令牌进行检查数据库以查看其是否仍然相同-更改密码时需要自动更改此刷新令牌,而原始密码需要该密码。但是,如果ID读起来不是那么“明显”,我想我会更有信心。
对此有任何想法或建议吗?坚持使用常规ID(0、1、2、3)还是针对此特定情况更改为UUID并将其存储在JWT中?
干杯!