发布授权不起作用

时间:2018-01-06 09:25:50

标签: express mongoose mean-stack

我试图限制一个用户编辑其他人帖子的能力。 当我点击“编辑帖子”时它改变了帖子的作者,是因为' save'方法还是? 这是我的尝试:

router.put('/posts/:id', passport.authenticate('jwt'), (req, res) => {

Post.findOne({_id: req.params.id}, (err, post) => {
    if (err) throw err;
    if (post.author = req.user._id) {
        post.title = req.body.title,
        post.content = req.body.content,
        post.postImageUrl = req.body.postImageUrl

        post.save((err, updatedPost) => {
            if (err) throw err;
            else {
                res.json({message:'You have successfully updated your post', success: true});
            }
        });

    } else {
        res.json({success: false, message: 'You are not allowed to do this.'});
    }
});

});

我检查了post.author和req.user._id,他们匹配。

1 个答案:

答案 0 :(得分:0)

请检查您的条件,检查当前用户是否是帖子的作者。而不是检查是否相等,您正在尝试分配和更改作者值。

if (post.author = req.user._id)

<强>解决方案:

Mongoose提供了一个.equals方法来检查对象ID的相等性。这是Mongoose使用的mongodb-native driver .equals方法的docs的链接。

if (post.author.equals(req.user._id))