UNPKG

cjwt

Version:
84 lines (60 loc) 1.87 kB
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](https://github.com/auth0/node-jsonwebtoken#jwtsignpayload-secretorprivatekey-options-callback) - options.verifyOptions: Object 校验签名时附加选项 参考 [jsonwebtoken](https://github.com/auth0/node-jsonwebtoken#jwtverifytoken-secretorpublickey-options-callback)