如何在Angular中检查用户令牌?

时间:2016-10-14 11:47:56

标签: angularjs node.js express jwt angularjs-http

我使用节点和角度使用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) {

            }
        );
    }

如何在更改路线时检查令牌?

一般来说我如何使用令牌?

1 个答案:

答案 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详细的事件文档。

关于更通用的实现,您可以创建一个服务,以便在登录时或在您获得令牌时保留令牌。此后,您可以继续从服务中获取令牌,以便将来进行比较。