1.生成的二维码是使用Google的zxing的方式生成的,具体生成方式见
java实现二维码的生成与解析
2.产品需求:目前只有扫描二维码添加好友功能,考虑到后续需求可能要求 增加扫描安装安全屋或更多功能接口 ,所以打算设计一个通用验证接口。
方案一:生成一个token,存储redis中,vlaue值为id。此id是新建一个 二维码表的主键,建表的时候考虑到了以后可能会增加下载app相关需求,并且增加一个后台 验证二维码接口,为以后可能扩展的功能做基础。对于该方案 可能以后会增加除添加好友和下载的更多功能,那么就在value值中添加type方式进行验证。
该方案安全性可以,为本次采用的方案。
方案二:后经思考其实可以使用JWT验证的方式进行优化,二维码中包含根据JWT规则生成的token信息,其中payload部分可以包含用户的account信息和type方式,type代表是添加好友还是下载安装或之后更多功能,经过后端分析之后返回给app端进行验证,
该方案安全性没有方案二高,因为客户端可以截取解析的,但是该方案不用使用数据库,不用存redis,已知情况目前使用这种方式会更高效 但因为当时使用的方案一版本已上线,所以考虑以后优化。
此方案为本人早起突然想到的方案,可能还有不足之处。