使用jwt检查令牌是有效还是无效
问题描述:
嗨我有一个应用程序中的令牌小问题。我有中间件来检查下一个路线中的令牌,我使用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
答
在前端的角度来创建功能检查会话有效期。它应该计算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)
}