2017-10-21 86 views
0

嗨我有一個應用程序中的令牌小問題。我有中間件來檢查下一個路線中的令牌,我使用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 

回答

0

在前端的角度來創建功能檢查會話有效期。它應該計算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) 
     } 
相關問題