2017-10-21 6 views
0

Hey j'ai un petit problème avec jeton dans l'application. J'ai middleware pour vérifier jeton dans les prochaines routes et j'utilise tokne à isLoggedIn fonction angulaire pour vérifier les utilisateurs connectés. Mais si je change de jeton dans l'espace de stockage local, l'utilisateur est toujours connecté car le jeton existe toujours mais n'est pas valide. Pourriez-vous aider comment je peux réponse de middleware que le jeton est valide ou invalide et ensuite vérifier ceci dans angulaire? Question: Comment vérifier que le jeton est valide ou invalide dans angulaire? par exemple. si jeton est l'emplacement de l'itinéraire de changement invalide S'il vous plaît regarder mon code:Vérifiez que jeton est valide ou invalide en utilisant jwt

middleware

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' }); 
    } 
}); 

usine

.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 
}) 

fonction isLoogedIn

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

Répondre

0

créer une fonction dans frontend angulaire vérifier la validité de la session .. il devrait calculer la timesta mp du jeton et de la machine locale, si elle est expirée, ajoutez la fonction pour $ location.path ([l'emplacement de redirection]). Exemple pour votre usine

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) 
     }