[英]How do I grant users access to specific APIs with IdentityServer4?
[英]How do i make specific users for only them to have access to their own specific data in mongodb and nodejs
我正在做一个博客项目。 我完成了创建、编辑和删除帖子的功能。 我还使用护照身份验证设置和登录和注册,并且已经可以将页面限制为仅登录用户。 我还想将帖子的编辑和删除限制为仅限创建帖子的用户。 我似乎无法弄清楚这两个集合的链接方式(一个是用户集合,另一个是帖子集合)。
下面是两个 collections 的架构
帖子架构
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 字段,该字段将与createdBy
中的 id 链接。 因此,当用户登录时,您将获得用户的 ID。 通过它您可以检查帖子是否由该特定用户创建。 这是目前最适合您的情况的方法。
如果你想拥有更广泛的角色。 例如可以编辑任何文章的编辑。 有两种方法可以做到:
如果您需要多个角色并且他们的权限是可配置的
您需要创建具有角色名称、权限等的 roleSchema。在 userSchema 中将有一个名为 role 的字段,对应于每个用户的 role_id。 这将允许您将来通过 UI 轻松更改权限并创建新角色。
如果你只是有几个角色并且确信它不会经常改变
您可以自己定义这些角色是什么:例如 1 -> Editor、2 -> Subscriber、3 -> Admin 等。然后在 userSchema 中添加一个角色字段来放置相关角色。 这将允许您对每个角色拥有固定的权限。 现在,当您对文章进行任何操作时,您可以获得角色并进行相应的过滤。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.