cjwt
v0.3.1
Published
Casstime jwt middleware
Downloads
20
Readme
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