token

发布时间 2023-10-10 00:02:46作者: 菜菜00

Token:令牌,用于证明客户端身份的机制。原理:服务器端把客户端的信息保存在一个对象中,加密为一个定长字符串,发送给客户端;客户端保存起来;等到下次请求时,客户端可以再把加密字符串返回给服务器;服务器可以解密出其中的原始信息,从而进一步查询更多信息——类似于银行给客户端的“银行卡”,其中存储着客户端的信息(加密存储,客户端是读不懂的),后续有些请求需要客户端出示此“银行卡”有些请求则不需要。

使用token实现“登录后获取个人信息”
客户端 服务器
第一次请求:登录 1、客户端发送简单请求,包含phone和pwd
2、服务器验证登录信息,成功后,把客户端信息保存在一个对象中,形如:{
用户编号:123,
用户名:yaya,
登录时间:x年x月x日 xx:xx:xx,
登录过期时间:x年x月x日 xx:xx:xx
….
}
3.服务器将上述对象加密为定长字符串(即token);随同响应消息一同返回给客户端:
{
code:2000, msg: 'login succ',
token: '加密后的定长字符串'
}
4、接收到响应消息,把其中的token保存在客户端
uni.setStorageSync('userToken', data.token)
第二次请求:获取首页数据 5、从客户端读取之前保存的token
let token=uni.getStorageSync('userToken')
6、发送请求消息,把token放在请求消息头中(与后端协商好的请求头)
uni.request({
url,
header:{ token: token }
})
生成的请求消息形如:
GET /index/data HTTP1.1
token: ''加密后的字符串''
7、服务器接收到请求消息,从请求头中读取req.headers.token(即token),解密令牌,得到原始的令牌信息,即:{
用户编号:123,
用户名:yaya
登录时间:x年x月x日 xx:xx:xx,
登录过期时间:x年x月x日 xx:xx:xx
….
}
8、服务器根据用户信息查询数据库,将用户信息返回给客户端