Убедитесь, что токен действителен или недействителен с помощью jwt

Эй, у меня есть одна маленькая проблема с токеном в приложении. У меня есть промежуточное ПО для проверки токена на следующих маршрутах, и я использую токен для isLoggedIn функция в углу, чтобы проверить зарегистрированных пользователей. Но если я изменил токен в локальном хранилище, пользователь все равно будет зарегистрирован, потому что токен все еще существует, но недействителен. Не могли бы вы помочь, как я могу ответить от промежуточного программного обеспечения, что токен действителен или недействителен, и затем проверить это под углом? Вопрос: Как проверить, что токен действителен или недействителен в угловых? например, если токен неверен, измените местоположение маршрута. Пожалуйста, посмотрите мой код:

промежуточный слой

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

1 ответ

Создайте функцию в frontend angular для проверки правильности сеанса. она должна вычислить временную метку токена и локального компьютера, если истек срок действия, добавьте функцию для $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)
        }
Другие вопросы по тегам