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

eagi6jfj  于 2022-10-31  发布在  Angular
关注(0)|答案(2)|浏览(137)

我使用节点和Angular 通过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
                });
            }
        }
    });
};

Angular :

$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) {

            }
        );
    }

当我改变路线时如何检查令牌?
一般来说,我如何使用Token?

9nvpjoqh

9nvpjoqh1#

Angular ui-router在你改变路由时提供$routeChangeStart事件。你可以用下面的方法使用它。

$rootScope.$on('$routeChangeStart', function (event, next, current){
   //you can code here something to be run on changing routes
}

您可能需要在此处查看详细的事件文档。
关于更通用的实现,您可以创建一个服务,在登录时或任何时候获得令牌时保存令牌。此后,您可以继续从该服务获得令牌,以便将来进行任何比较。

8ehkhllq

8ehkhllq2#

您应该安装“cookie解析器”

npm i cookie-parser

并转到index.js文件并添加

const cookieParser = require('cookie-parser');
app.use(cookieParser());

对我很有效

相关问题