![](/img/trans.png)
[英]how to send jwt token to a middleware in a get request in express node.js
[英]Node.js express, request jwt token - how to properly get a new valid token if expired in request
成功登錄后,我將返回的JWT令牌存儲在Session中。 然后在搜索路徑中,使用會話中的jwt令牌訪問api,並在標頭中進行如下設置:
router.post('/search', (req, res) => {
var getToken = req.session.APIToken;
var auth = 'Bearer '+getToken;
request.get({
headers: {
"authorization": auth
},
url: "localhost/abc/search?name=peter"
}, (error, response, body) => {
if(error) {
return console.dir(error);
}
var jsonBody = JSON.parse(body);
if(jsonBody.status === 200) {
console.log('Request successful!');
}
if(jsonBody.success === false) {
/// ??? BUT what if the JWT token is expired! How do I properly refresh or get a new valid jwt token here? ///
console.log('Token expired!');
}
});
});
但是,如果JWT令牌已過期怎么辦! 如何在此處正確刷新或獲取新的有效jwt令牌?
我想使用回調函數使用會話中保存的電子郵件和密碼嗎? 但是我該怎么做呢?或者最好的方法是什么呢?
編輯:我有兩個應用程序...一個前端應用程序...和一個單獨的API應用程序。 因此,登錄時...我通過前端應用程序登錄,但從API應用程序獲取了JWT令牌。 前端應用程序的登錄會話為360s ... JWT令牌在60s內是有效的....因此,如果JWT令牌在用戶發出搜索請求時過期...我想自動生成一個新令牌,完成請求。
我認為您正在嘗試使用JWT令牌實現auth0。 最佳做法是在登錄時始終返回2個令牌:
access_token(使用JWT):JWT的好處是服務器不需要查詢數據庫即可驗證並獲取有關正在調用API的用戶的信息
refresh_token:這對用戶在access_token過期時重新生成令牌很有用。
在客戶端應用程序中,您應該始終保存2個令牌。 在調用任何API之前,您應該檢查JWT是否過期。 使用jwt.decode()
可以輕松完成。 過期信息通常存儲在exp
或iat
鍵中。 如果已過期,則需要在調用實際的API之前調用API以重新生成令牌。
您可以在此處找到示例: https : //auth0.com/blog/refresh-tokens-what-are-they-and-when-to-use-them/
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.