我正在嘗試爲我正在編寫的基於koa的節點應用使用json web令牌koa-jwt middleware。我想設置Web令牌的有效負載到期,我注意到使用標準實現會在兩個月後的有效負載中產生到期日期。此實現如下所示:使用koa-jwt設置過期
var koa = require('koa');
var jwt = require('koa-jwt');
var app = koa();
...
// This is the jwt line in question...
app.use(jwt({ secret: 'shared-secret' }));
...
我希望做的是控制,這樣我可以將其設置爲1周,1天,第15分鐘,不管。我已經嘗試了一些變化,如:
app.use(jwt({ secret: 'shared-secret', exp: 30 }));
app.use(jwt({ secret: 'shared-secret', expires: 30 }));
...等等,但至今沒有奏效和文檔在這方面是很輕的。任何有關如何做到這一點的見解將不勝感激。
2月26日更新 感謝clemkoa我發現我的答案 - 原來我做的,我需要的「EXP」屬性的全部時間到底是什麼。在登錄過程中的用戶身份驗證成功返回此:
ctx.body = {success: true, token: user.generateJWT()};
凡user.generateJWT()是在用戶模式貓鼬的函數調用。功能如下:
UserSchema.methods.generateJWT = function() {
// set jwt expiration
var today = new Date();
var exp = new Date(today);
exp.setDate(today.getDate() + 1);
return jwt.sign({
_id: this._id,
username: this.username,
exp: parseInt(exp.getTime()/1000)
}, config.jwtSecret);
};
注意列入「EXP」屬性。這是有問題的路線。
當你試過 'expiresIn' 的時候?我不知道koa-jwt,但它似乎受到了jsonwebtoken的啓發,它使用expiresIn – clemkoa