我使用节点和角度使用JWT生成令牌,并且无法检查用户是否已获得授权。
节点:
module.exports.authenticate = function(req, res) {
var user = new User(req.body);
User.findOne({
username: req.body.username
}, function(err, user) {
if (err) throw err;
if (!user) {
res.json({ success: false, message: 'Authentication failed. User not found.' });
}
else if (user) {
if (user.password != req.body.password) {
res.json({ success: false, message: 'Authentication failed. Wrong password.' });
}
else {
var token = jwt.sign(user, config.secret, {
expiresIn: 60*60*24
});
res.json({
success: true,
token: token
});
}
}
});
};
角:
$http(req)
.then(function (response) {
console.log(response.data.success);
if(response.data.success) {
var user = localStorage.setItem('token', JSON.stringify(response.data));
token = localStorage.getItem('token');
// console.log('User info: ', JSON.parse(getuser));
// window.location = "/dashboard";
return response.data;
}
}, function (response) {
}
);
}
如何在更改路线时检查令牌?
一般来说我如何使用令牌?
答案 0 :(得分:2)
Angular ui-router在您更改路线时提供$routeChangeStart
事件。您可以通过以下方式使用它。
$rootScope.$on('$routeChangeStart', function (event, next, current){
//you can code here something to be run on changing routes
}
您可能希望查看here详细的事件文档。
关于更通用的实现,您可以创建一个服务,以便在登录时或在您获得令牌时保留令牌。此后,您可以继续从服务中获取令牌,以便将来进行比较。