ฉันมีแอปพลิเคชันโหนด เมื่อลูกค้ากำหนดเส้นทางไปที่ ('/เข้าสู่ระบบ') และด้วยข้อมูลประจำตัวที่ถูกต้อง ฉันกำลังสร้างโทเค็น JWT โดยมีเวลาหมดอายุและกำหนดเส้นทางไปยังหน้าถัดไป และหากผู้ใช้พยายามเข้าถึงเส้นทางใดๆ เช่น:('/home') โดยตรงหลังจากเข้าสู่ระบบ หากโทเค็นยังไม่หมดอายุ เขาควรจะสามารถกำหนดเส้นทางได้โดยตรง หากโทเค็นหมดอายุฉันต้องกำหนดเส้นทางไปที่ ('/login')
แต่ขณะนี้ยังใช้งานได้บางส่วน หากมีโทเค็นอยู่ เขาก็จะสามารถกำหนดเส้นทางไปยัง ('/home) ได้โดยตรง แต่เมื่อฉันเปิดเส้นทางเดียวกันในเบราว์เซอร์/หน้าต่างที่ไม่ระบุตัวตนที่ต่างไปจากเดิมอย่างสิ้นเชิง เขายังคงสามารถกำหนดเส้นทางได้ และใช้โทเค็นก่อนหน้า ซึ่งไม่ควรเป็นและควรถูกกำหนดเส้นทางไปที่ ('/login') เราจะทำสถานการณ์นี้ได้อย่างไร
ด้านล่างเป็นรหัสของฉันที่ฉันลอง
const SECRET = 'server secret';
var token;
router.post('/auth', passport.authenticate(
'local', {
session: false
}),generateToken, inserttoken,respond);
function generateToken(req, res, next) {
token = jwt.sign({
id: req.user.id,
},SECRET, {
expiresIn: 60
});
req.token = token;
next();
}
//In inserttoken() Iam inserting token value in db.
router.get('/home', function(req, res){
jwt.verify(token, 'server secret', function(err, decoded) {
if (err) {
console.log("token expired");
res.redirect('/');
}
else{
res.render('index.html');
}
});
});
ความช่วยเหลือใด ๆ ที่ชื่นชม ขอบคุณล่วงหน้า!