Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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 我如何让特定用户只允许他们访问mongodb和nodejs中自己的特定数据_Javascript_Node.js_Mongodb_Authentication - Fatal编程技术网

Javascript 我如何让特定用户只允许他们访问mongodb和nodejs中自己的特定数据

Javascript 我如何让特定用户只允许他们访问mongodb和nodejs中自己的特定数据,javascript,node.js,mongodb,authentication,Javascript,Node.js,Mongodb,Authentication,我正在做一个博客项目。我已经完成了创建、编辑和删除帖子的功能。我还设置、登录和注册了passport身份验证,并且已经可以将页面限制为仅登录用户。我还想将编辑和删除帖子的权限限制为仅创建帖子的用户。我似乎不知道如何链接这两个集合(一个是用户集合,另一个是帖子集合) 下面是这两个集合的模式 posts模式 const articleSchema = new mongoose.Schema({ title: { type: String, required:

我正在做一个博客项目。我已经完成了创建、编辑和删除帖子的功能。我还设置、登录和注册了passport身份验证,并且已经可以将页面限制为仅登录用户。我还想将编辑和删除帖子的权限限制为仅创建帖子的用户。我似乎不知道如何链接这两个集合(一个是用户集合,另一个是帖子集合)

下面是这两个集合的模式

posts模式

const articleSchema = new mongoose.Schema({
    title: {
        type: String,
        required: true
    },
    description: {
        type: String,
        required: true
    },
    markdown: {
        type: String,
        required: true
    },
    createdAt: {
        type: Date,
        default: Date.now
    },
    slug: {
        type: String,
        required: true,
        unique: true
    },
    sanitizedHTML: {
        type: String,
        required: true
    }
})
用户模式

const UserSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    date: {
        type: Date,
        default: Date.now
    }
});

在articleSchema中,您需要一个字段
createdBy
,该字段将与userSchema中的id链接。因此,当用户登录时,您将获得该用户的id。通过该id,您可以检查帖子是否由该特定用户创建。这是目前针对您的案例的最佳方法

如果你想扮演更广泛的角色。例如,可编辑任何文章的编辑。有两种方法可以做到这一点:

如果您需要多个角色且其权限可配置

您需要创建roleSchema,它将具有roleName、权限等。在userSchema中,将有一个名为role的字段,对应于每个用户的role_id。这将允许您在将来通过UI轻松地更改权限和创建新角色

如果你的角色很少,并且自信不会经常改变


您可以自己定义这些角色是什么:例如1->Editor、2->Subscriber、3->Admin等,并在userSchema中添加一个角色字段以放置相关角色。这将允许您对每个角色拥有固定权限。现在,当您对文章进行任何操作时,您可以获得角色并进行相应的筛选

嘿@preshy jones,如果答案对你有帮助,请接受。