Namespace, Primitive, Method

    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

    Install

    npm i cjwt

    DownloadsWeekly Downloads

    18

    Version

    0.3.1

    License

    ISC

    Last publish

    Collaborators

    • pansinm