一、什么是token
token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。
简单token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩的一定长度的十六进制字符串。为防止token泄漏)。
二、身份认证概述
由于http是一种无状态协议,它并不不知道是谁访问了我们的应用。这里把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下次这个客户端再发送请求的时候,还得再验证一下。
通常的解决方法就是,当用户请求登陆的时候,如果没有问题,在服务端生成一条记录,在这个记录里可以说明登陆的用户是谁,然后把这条记录的id发送给客户端,客户端收到以后把这个id存储在cookie中,下次该用户再次向服务器发送请求的时候,可以带上这个cookie,这样服务端会验证一下cookie里的信息,看能不能在服务端这里找到对应的记录,如果可以,说明用户已经通过了身份验证,就把用户请求的数据返回给客户端。这里的id值就是SesssionID,我们需要在服务端存储为用户生成的session,这些session会存储在内存,磁盘,或者数据库。
三、基于token的身份认证
使用token机制的身份验证方法,在服务器端不需要存储用户的登录记录。大概的流程:
客户端使用用户名和密码