在前面的《uniapp多端登录实现》中,大概地介绍了登录的流程图,这一篇对它的登录原理作一下叙述。
在传统的网页登录系统中,前端一般使用cookie来记录用户的登录状态,后端一般使用session,uniapp登录属于前端。使用cookies作为用户的登录机制,用户的信息可以通过浏览器来查看或者获取,很容易暴露用户的信息,不推荐使用。
在uniapp的多端登录中,推荐使用token认证机制,这一机制可以适用每一个端,cookie似乎仅能用于h5,为顾全大局,也为更安全着想所以就使用token。
生成token
在用户注册时,如使用帐户,会把用户信息如手机号码+密码提交到后端,后端验证通过后会给用户生成一个帐号并写入数据库,永久保存,与此同时通过随机生成一段唯一的字符串并使用md5加密,这样我们就得到了一个token值,把用户的注册信息如用户id(入库产生的记录id)、openid(微信的openid),用户组group_id等组成一个数组并转为json格式。至此,我们得到两个字符串token和json,然后把token作为键,json作为值关联起来,通过token可以获取到json里的信息如用户id等。通过后端把这一关联数据生成缓存储存起来,并赋给它一个时效时间2个小时,过期会自动销毁。
token认证机制
用户注册成功后,就拥有了一份唯一的token。登录时通过后端验证成功后,就把token返回给用户并通过uni.setStorageSync('token', '后端返回的token')储存起来,用户获取到token后就表示已经登录成功,在以后的操作中,如查看数据,修改数据,在向后端请求时需要把token放在header头发送过去,后端获取到token后,验证其真伪,通过后完成了前端的数据请求。