Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 修改其他用户的对象时快速返回“用户未授权”_Javascript_Node.js_Security_Express_Mongoose - Fatal编程技术网

Javascript 修改其他用户的对象时快速返回“用户未授权”

Javascript 修改其他用户的对象时快速返回“用户未授权”,javascript,node.js,security,express,mongoose,Javascript,Node.js,Security,Express,Mongoose,我的教室模型如下所示: /** * Classroom Schema */ var ClassroomSchema = new Schema({ created: { type: Date, default: Date.now }, participants: [{ type: Schema.ObjectId, ref: 'User' }], lesson: { type:

我的教室模型如下所示:

/**
 * 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”字段,并在其中存储创建者的用户ID

然后,您可以只允许掌握该特定教室的用户执行删除/修改等操作,同时允许所有人进入