Nodejs-token

token基础

  • 一个JWT(Java Web Token)实际上就是一个字符串,它由头部、载荷与签名 三部分组成
  • 编码之后的JWT是这样的一串字符
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.
TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ 
  • .分为三段,通过解码可以得到
// 1. Headers头部
// 包括类别(typ)、加密算法(alg)
{
 "alg": "HS256",
 "typ": "JWT"
}
// 2. Claims载荷
// 包括需要传递的用户信息
{
 "sub": "1234567890",
 "name": "John Doe",
 "admin": true
}
// 3. Signature签名
// 根据alg算法与私有秘钥进行加密得到的签名字串
// 这一段是最重要的敏感信息,只能在服务端解密
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), SECREATE_KEY)

核心代码

const jwt = require('jsonwebtoken');
const secret = 'qwert';   //自定义
app.set('superSecret', secret);
 //生成token
const token = jwt.sign(user, app.get('superSecret'));
//解码token
jwt.verify(token, app.get('superSecret'), function (err, decoded){
    //decoded 是得到的用户信息
}

原理

  • 安装nodejs的模块jsonwebtoken,设置一个字符串当作密钥
  • 如果登录成功,服务器就根据用户名和密钥生成一个token,并返回token给客户端
  • 如果想得到个人信息,就可以发送这个token,经过verify验证成功,得到信息

总结

  • 可以把生成的token存放在cookie中,相当于把session Id存放在cookie

demo地址

参考文章推荐:
Authenticate a Node.js API with JSON Web Tokens
JWT 在前后端分离中的应用与实践

你可能感兴趣的:(Nodejs-token)