token(JWT)
token
是服务端生成并返回给HTTP
客户端的一串加密字符串,token
中保存着用户信息- 实现会话控制,可以识别用户的身份,主要用于移动端 APP
token
的工作流程- 校验身份,校验通过后响应
token
,token
一般是在响应体中返回给客户端的 - 后续发送请求时,需要手动将
token
添加在请求报文中,一般是放在请求头中
- 校验身份,校验通过后响应
token
的特点- 服务端压力更小(数据存储在客户端)
- 相对更安全(数据加密、可以避免
CSRF
【跨站请求伪造】) - 扩展性更强(服务间可以共享、增加服务节点更简单)
JWT
- JWT(JSON Web Token)是目前最流行的跨域认证解决方案,可用于基于
token
的身份验证 - JWT使
token
的生成与校验更规范
使用jsonwebtoken
包操作token
示例
//导入 jsonwebtokan
const jwt = require('jsonwebtoken')
//创建 token
// jwt.sign(数据, 加密字符串--盐值, 配置对象)
let token = jwt.sign(
{
username: 'zhangsan'
},
'tokentest',
{
expiresIn: 60 //单位是 秒
}
)
//解析 token
// jwt.verify(token, 加密字符串--盐值, 回调函数)
jwt.verify(token, 'tokentest', (err, data) => {
if(err){
console.log('校验失败~~')
return
}
console.log(data)
})