Tôi hơi bị bối rối bởi cái này. Tôi đang cố thiết lập JWT hợp lệ. Tôi đang sử dụng node.js với phần mềm trung gian jsonwebtoken. Tôi đã theo các tài liệu nằm trên repo (located here), nhưng tôi tiếp tục nhận được Exp và Iat sai. Rõ ràng tôi muốn có được quyền này để tôi không cho phép JWT đã hết hạn.Không thể đặt Exp và Iat cho JWT chính xác
Là một thử nghiệm tôi có đoạn mã sau:
var token = jwt.sign({"id": user._id}, configGeneral.JWT, { expiresIn: '1h' });
var decoded = jwt.decode(token, configGeneral.JWT);
var d1 = new Date(decoded.exp);
var d2 = new Date(decoded.iat);
console.log(decoded);
console.log(d1);
console.log(d2);
Kết quả của việc này là:
{ id: '56253091fe0397c80133f3e4',
iat: 1445714161,
exp: 1445717761 }
Sat Jan 17 1970 19:35:17 GMT+0200 (South Africa Standard Time)
Sat Jan 17 1970 19:35:14 GMT+0200 (South Africa Standard Time)
Làm thế nào để tôi nhận được dấu thời gian để không phản ánh thời đại javascript, nhưng thay vì thời gian 1 giờ kể từ bây giờ? (Cho cả iat và exp.)
nếu tôi lấy ví dụ mã thứ 4 của bạn và nạp nó vào hết hạnTrong thời gian đó, tôi nhận được thời đại và một vài ngày (3 Feb 1970). Tuy nhiên, nếu tôi xóa số chia cho 1000, tôi sẽ có ngày hôm nay + 17 ngày và vài giờ của thời đại. Tôi chơi xung quanh một chút nhưng có Ext để hiển thị ngày hết hạn chính xác (xem cập nhật câu hỏi của tôi). Tuy nhiên, điều này vẫn còn lại cho tôi với một Iat không chính xác. – Ebbs
Tôi đã đăng giải pháp mà tôi đã đưa ra vì nó thực sự giải quyết được vấn đề mà tôi không nhận được Ext và Iat chính xác vào JWT. Tôi có lẽ đã không giải thích rõ phần đó và tôi nghĩ bạn có thể đã hiểu lầm yêu cầu đó vì điều đó. Tuy nhiên, đầu vào của bạn chắc chắn đã giúp tôi có được câu trả lời đúng, cảm ơn người đàn ông! :) Bạn đang quire ngay rằng tôi sẽ phải giải mã các JWT và sau đó so sánh các giây của Ext với thời gian hiện tại của tôi để có thể xác định nếu JWT đã hết hạn hay không. – Ebbs
Tôi thích 'ngày mới(). GetTime()/1000 + 60 * 60' – ChrLipp