jwt-simple 包使用详解

2018-08-22  本文已影响0人  天涯笑笑生

一、简介

二、使用

安装

npm install --save jwt-simple

生成token & 解析token

const tokenExpiresTime = 1000 * 60 * 60 * 24 * 7

//秘钥
const jstSecret = 'jstSecret'

//需要加密的对象
const payload = {
    user:'wang',
    environment:'web',
    expires: Date.now() + tokenExpiresTime
}

//encode
var token = jwt.encode(payload, jstSecret)

console.log('token: ', token)

//decoded
var decoded = jwt.decode(token, jstSecret)

console.log('decoded: ', decoded)

执行结果:

token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoid2FuZyIsImVudmlyb25tZW50Ijoid2ViIiwiZXhwaXJlcyI6MTUzNTUyMDk1MTcxOX0.4rmP6UeeJ3mQbHfplruH15PvuUxPzFTxAfVnPgA7sgo
decoded: { user: 'wang', environment: 'web', expires: 1535520951719 }

token

整个token 分为三部分:头部(header)、载荷(payload, )、签证(signature),上方截图中的token字符串是由此三部分经过base64加密得到的

{
  'typ': 'JWT',
  'alg': 'HS256'
}

algorithm 默认的为HS256,源码中可以看到其他可选

/**
 * support algorithm mapping
 */
var algorithmMap = {
  HS256: 'sha256',
  HS384: 'sha384',
  HS512: 'sha512',
  RS256: 'RSA-SHA256'
};
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

jwt 编码解码方法

jwt_encode(payload, key, algorithm, options)
jwt_decode(token, key, noVerify, algorithm)

使用说明

服务器对用户提交的信息(一般用户名密码)验证成功后,服务器根据提交的公共信息(用户名或ID,不能使用敏感信息如密码,因为token在客户端也是可以被解密的)外加服务器持有的秘钥生成token并返回给客户端,客户端在随后需要验证的请求中携带该token,服务器每次处理请求之前先通过该token验证用户的合法性(签发者是不是服务器自己,token是否过期,是否在有效期内),通过后再交由其它模块处理请求。
token携带
token可以作为请求链接的参数、请求主体(body)的参数,或者请求头(Header)的参数

token获取
可以通过规定携带方式,也可以同时通过多种方式获取

var token = (req.body && req.body.access_token) || (req.query && req.query.access_token) || req.headers['x-access-token'];

一般token获取验证模块作为中间件

上一篇 下一篇

猜你喜欢

热点阅读