Убедитесь, что токен действителен или недействителен с помощью 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)
}