2016-02-26 24 views
2

我正在嘗試爲我正在編寫的基於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」屬性。這是有問題的路線。

+0

當你試過 'expiresIn' 的時候?我不知道koa-jwt,但它似乎受到了jsonwebtoken的啓發,它使用expiresIn – clemkoa

回答

相關問題