gpt4 book ai didi

javascript - 修改其他用户的对象时 Express 返回 "User is not authorized"

转载 作者:太空宇宙 更新时间:2023-11-04 02:31:36 24 4
gpt4 key购买 nike

我有一个如下所示的类模型:

/**
* Classroom Schema
*/
var ClassroomSchema = new Schema({
created: {
type: Date,
default: Date.now
},
participants: [{
type: Schema.ObjectId,
ref: 'User'
}],
lesson: {
type: Schema.ObjectId,
ref: 'Lesson',
required: 'Define a lesson for this classroom',
},
user: {
type: Schema.ObjectId,
ref: 'User'
},
currentTaskIndex: {
type: Number,
default: 0
},
});

正如您所看到的,该模型保留了对创建类的用户(用户)的引用,并且它还有许多参与者(更多用户)。

我正在尝试添加功能,以允许其他用户(不是类的创建者)通过在参与者字段中使用新用户向类 API 发送 PUT 请求来加入类。然而,由于发送请求的用户不是创建该对象的用户,Express 将返回 403(禁止):

exports.hasAuthorization = function(req, res, next) {
if (req.classroom.user.id !== req.user.id) {
return res.status(403).send('User is not authorized');
}
next();
};

解决此问题的最佳方法/模式是什么,允许用户加入其他用户创建的类,但不执行删除对象等其他操作。其他字段可能会由其他参与者更新,例如 currentTaskIndex。

感谢您的帮助!

最佳答案

您可以向教室添加“master”或“admin”字段,并在其中存储创建者的 userId。

然后您可以只允许该特定教室的主人的用户进行删除/修改等操作,同时让每个人都可以进入。

关于javascript - 修改其他用户的对象时 Express 返回 "User is not authorized",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26227505/

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