gpt4 book ai didi

node.js - 检查当前用户是否登录

转载 作者:搜寻专家 更新时间:2023-11-01 00:48:17 24 4
gpt4 key购买 nike

我的 Angular 应用程序中有一个个人资料部分,假设现在我有 5 个用户。

我有一条路线,用户必须更改密码。我想验证用户是否正确登录并通过身份验证,并且他们不能更改任何其他用户的密码。

router.get('/change-password/:username', (req, res) => {
User.findOne({
username: req.params.username
}).then(user => {
if (user) {
res.status(200).json(user);
} else if (!user) {
res.status(404).json({
message: 'user not found'
});
}
});
});

如果用户 A 登录后将参数更改为 B,然后更改密码怎么办?有什么办法我不传递参数并获取当前登录的用户

最佳答案

基本上是这样的,当您从后端登录用户时,您会向前端发送一个带有 token 的响应。您将此 token 保存到本地存储,以便在对后端的每个请求中使用它。他们,您使用中间件功能来检查 token 是否像承载一样在请求的 header 中提供。所以答案是:你不必检查每个请求的授权,你只需要检查 token 是否由中间件提供,是否正确。如果您使用的是 express,大多数应用程序都会使用身份验证服务类中的中间件 like this :

module.exports.isAuthorized  = function(req, res, next) {

User.findById(req.session.userId).exec(function (error, user) {
if (error) {
return next(error);
} else {
if (user === null) {
var err = new Error('Not authorized! Go back!');
err.status = 400;
return next(err);
} else {
return next();
}
}
});
}

在 node.js 路由中:

var auth = require('./auth');

// GET route after registering
router.get('/clientPage', auth.isAuthorized, function (req, res, next) {console.log("1114");
res.sendFile(path.join(__dirname + '/../views/clientPage.html'));
});

如您所见,第二个参数表示在发出请求之前,它将执行中间件函数auth.isAuthorized

关于node.js - 检查当前用户是否登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55903073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com