Node.js开发-会话控制-5) token

时间:2024-02-17 21:56:08

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);
});

相关文章