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