最近在支援一个项目,因为是后期过去的,所以协议的校对都没从我这里过,然后刚好要用到一个uid,突然看到一个数字 5
。不由得几分抗拒。
首先说ID是什么,通常是指唯一标示,比如系统唯一的一位用户。
从安全性:如果ID是int类型
- 只要接口设计稍不合理,系统用户信息就可能被爬虫盗刷。
- 用户数量只要试一试接口就知道了。
从可维护性:如果ID是int32/int64类型
- 不利于扩展的点在于,一般说int,android默认是java Interger,只是32位的Int。后面升级成Long之后,还要改一波客户端。
- js Number有精度丢失的问题,超过整数超过53位之后,后面几位是随机变的。前端拿到的ID从一开始就是错的。
- 不利于平行扩展。想一下这样一种场景,如果日注册用户数很大,那么为了高可用高并发,必须做ID的分段,这时候int32就明显不够用了。
- 不利于做安全加密方面的扩展。
项目进行到一半,我说要改。后端的同事就说放心放心,到不了这个用户级别;还说产品那边都没这样的设计,你操什么心。
我。。。觉得不行。。哎。。
正常我们是怎么做的呢?
- 只要是ID其数值类型就是String
- 为了高并发高可用,用户ID的生成可能是在多部机器上的,分段生成的,根据生成规则生成之后,对ID信息做加密
- 所有用户信息必须在登陆后获取。若高频获取用户信息,触发安全机制,返回假数据
.
.
.
玩~