cjwt

0.3.1 • Public • Published

cjwt

简介

约定jwt payload 默认有sub和ctx属性。 sub标识请求从何而来,可以为用户或服务。ctx标识以谁的名义请求。 以下payload表示该请求来自内部test服务,请求xm的相关资源。

{
  "sub": "service:test",
  "ctx": {
    "username": "xm"
  }
}

安装

npm install cjwt --save

使用

const CJWT = require('cjwt');
const cjwt = new CJWT(options);

app.use(cjwt.middleware());
app.use((req, res, next) => {
  const cjwt = req.cjwt;
  // cjwt.sub
  // cjwt.iss
  // cjwt.issuer
  // cjwt.subject.type
  // cjwt.subject.id
  
  // cjwt.isService 是否为服务调用
  // cjwt.subjectType 调用类型
  ...
});

cjwt.sign('service', 'cjwt', {username: 'test'})
  .then(console.log);

middleware

使用中间件后会将payload添加到req.cjwt对象中, payload的值可以通过两种方式取:

req.cjwt.iss === req.cjwt.issuer

同时,可以使用req.cjwt.sign,req.cjwt.verify,req.cjwt.decode等方法

注意,req.cjwt.subject被解析成对象含有type和id两个属性 而req.cjwt.sub直接返回payload中的sub属性

req.cjwt.sub // 'service:test'

req.cjwt.subject.type // 'service'

req.cjwt.subject.id // 'test'

options

  • options.secret: String|Function,可以直接给字符串,或者返回Promise的函数

    const secret = (payload) => {
      const code = getSecretCode();
      const salt = payload.username;
      return Promise.resolve(code + salt);
    }
    
  • options.signOptions: Object 生成签名时附加选项

    参考 jsonwebtoken

  • options.verifyOptions: Object 校验签名时附加选项

    参考 jsonwebtoken

Dependencies (3)

Dev Dependencies (2)

Package Sidebar

Install

npm i cjwt

Weekly Downloads

5

Version

0.3.1

License

ISC

Last publish

Collaborators

  • pansinm