使用jwt检查令牌是有效还是无效

使用jwt检查令牌是有效还是无效

问题描述:

嗨我有一个应用程序中的令牌小问题。我有中间件来检查下一个路线中的令牌,我使用tokne来检查记录的用户的角度为isLoggedIn。但是如果我更改本地存储中的令牌,用户仍然记录,因为令牌仍然存在,但是无效。你能帮助我如何从中间件响应令牌有效或无效,接下来检查角度?问题:如何检查该标记在角度上有效还是无效?例如如果令牌是无效的变化路径位置 请看看我的代码:使用jwt检查令牌是有效还是无效

中间件

router.use(function(req, res, next){ 
var token = req.body.token || req.body.query || req.headers['x-access-token'] 
    if(token){ 
    jwt.verify(token, secret, function(err,decoded){ 
     if(err){ 
      res.json({success:false, message:'Invalid token'}) 
     } else { 
      req.decoded = decoded; 
      next() 
     } 
    }) 
    } else { 
    res.json({ success: false, message:'No token provided' }); 
    } 
}); 

工厂

.factory('AuthToken', function($window){ 
    var authTokenFactory = {}; 
    authTokenFactory.setToken = function(token){ 
    if(token){ 
     $window.localStorage.setItem('token',token) 
    } else { 
     $window.localStorage.removeItem('token') 
    } 

    }; 
    authTokenFactory.getToken = function(){ 
    return $window.localStorage.getItem('token') 
    } 

    return authTokenFactory 
}) 

isLoogedIn功能

authFactory.isLoggedIn = function(){ 
    if(AuthToken.getToken()){ 
     return true 
    } else { 
     return false 
    } 
} 
return authFactory 

在前端的角度来创建功能检查会话有效期。它应该计算timesta mp和令牌和本地计算机(如果已过期)添加$ location.path([重定向位置])函数。 适用于您工厂的示例

app.checksession = function() { 
     if(Auth.isLoggedIn()) { 
      app.isLoggedIn = true; 
      var interval = $interval(function(){ 
       console.log('test'); 
       var storedToken = $window.localStorage.getItem('token'); 
       if(storedToken === null){ 
        $interval.cancel(interval); 
       } else { 
        self.parseJwt = function(token){ 
         var tokenExp = storedToken.split('.')[1]; 
         return JSON.parse($window.atob(tokenExp)); 
        } 
        var parsedToken = self.parseJwt(storedToken); 
        var expireyTime = parsedToken.exp; 
        var timeStamp = Math.floor(Date.now()/1000); 
        var difference = expireyTime - timeStamp; 
        console.log("the token expirey is: \n"+expireyTime+"\nthe current time stamp is:\n"+timeStamp+"\nthe difference is:\n"+difference); 
        if(difference <= 0) { 
         app.isLoggedIn = false; 
         app.triggerModal(); // change this to location.path function 
        } 
       } 
      }, 2000) 
     }