认识了二维码,我们了解一下移动互联网下的传统登录认证机制。
前面我们说过,为了安全,手机端它是不会存储你的登录密码的。 但是在日常使用过程中,我们应该会注意到,只有在你的应用下载下来后,第一次登录的时候,才需要进行一个账号密码的登录, 那之后呢 即使这个应用进程被杀掉,或者手机重启,都是不需要再次输入账号密码的,它可以自动登录。
其实这背后就是一套基于token的认证机制,我们来看一下这套机制是怎么运行的。
如上图所示:
- 1)账号密码登录时,客户端会将设备信息一起传递给服务端;
- 2)如果账号密码校验通过,服务端会把账号与设备进行一个绑定,存在一个数据结构中,这个数据结构中包含了账号ID、设备ID、设备类型等等。
const token = {
acountid: '账号ID',
deviceid: '登录的设备ID',
deviceType: '设备类型,如 iso,android,pc......',
}
然后服务端会生成一个token,用它来映射数据结构,这个token其实就是一串有着特殊意义的字符串,它的意义就在于,通过它可以找到对应的账号与设备信息。
具体是:
- 1)客户端得到这个token后,需要进行一个本地保存,每次访问系统API都携带上token与设备信息;
- 2)服务端就可以通过token找到与它绑定的账号与设备信息,然后把绑定的设备信息与客户端每次传来的设备信息进行比较, 如果相同,那么校验通过,返回AP接口响应数据, 如果不同,那就是校验不通过拒绝访问。
从前面这个流程,我们可以看到,客户端不会也没必要保存你的密码,相反,它是保存了token。
可能有些同学会想,这个token这么重要,万一被别人知道了怎么办。
实际上:知道了也没有影响, 因为设备信息是唯一的,只要你的设备信息别人不知道, 别人拿其他设备来访问,验证也是不通过的。
可以说,客户端登录的目的,就是获得属于自己的token。
限于篇幅,这方面的文章,可以详细读一下以下几篇:
《IM开发基础知识补课(一):正确理解前置HTTP SSO单点登陆接口的原理》
《IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token》
《IM开发基础知识补课(七):主流移动端账号登录方式的原理及设计思路》(推荐)
那么在扫码登录过程中,PC端是怎么获得属于自己的token呢?不可能手机端直接把自己的token给PC端用!token只能属于某个客户端私有,其他人或者是其他客户端是用不了的。
在分析这个问题之前,我们有必要先梳理一下,扫描二维码登录的一般步骤是什么样的。这可以帮助我们梳理清楚整个过程。