2017-10-21 17 views
0

ちょっとした問題があります。私は次のルートでトークンをチェックするためのミドルウェアを持っており、ログに記録されたユーザをチェックするために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

:トークンが無効の変更ルートの場所 であれば私のコードで見てください。セッションの有効性をチェックしてください。タイムスタンプを計算する必要がありますトークンとローカルマシンの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) 
     } 
関連する問題