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 在前后端分离中的应用与实践

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.背景介绍 由于HTTP是一种无状态协议,服务器没有办法单单从网络连接上面知道访问者的身份,为了解决这个问题,就...
    黑白电影_阅读 13,467评论 0 10
  • 转载本文需注明出处:微信公众号EAWorld,违者必究。 本文目录: 一、单体应用 VS 微服务 二、微服务常见安...
    72a1f772fe47阅读 12,718评论 3 25
  • 概述 JSON Web令牌(JWT)是一个紧凑的采用URL安全表示方法的声明,用于在两方之间传输。JWT的声明被编...
    御浅永夜阅读 10,637评论 0 0
  • why JWT 现在,前后端分离和 RESTful API 越来越火热,当后台渐渐开始只负责为客户端提供 API ...
    jaychenIsUsed阅读 10,514评论 1 8
  • 讲师训第2周: 这周基本节奏是紧凑、紧张的过了~在所有导师严格的监督下,我们一路过关斩将来! 这周学会了思维导图和...
    钟月娥阅读 955评论 0 0