Как сделать определенные c пользователей, чтобы только они имели доступ к их собственным c данным в mongodb и nodejs - PullRequest
1 голос
/ 26 мая 2020

Я работаю над проектом блога. Я закончил с функцией создания, редактирования и удаления сообщений. У меня также есть настройка, вход и регистрация с аутентификацией по паспорту, и я уже могу ограничить страницы только авторизованными пользователями. Я также хочу ограничить редактирование и удаление сообщений только пользователями, которые создали сообщение. Я просто не могу понять, как связываются две коллекции (одна - это коллекция пользователей, а другая - коллекция сообщений).

Ниже приведены схемы для двух коллекций

схема сообщений

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
    }
});

1 Ответ

2 голосов
/ 26 мая 2020

В articleSchema вам нужно поле createdBy, которое будет связано с идентификатором в userSchema. Итак, когда пользователь вошел в систему, вы получите идентификатор пользователя. С помощью которого вы можете проверить, создан ли пост этим конкретным пользователем. Это лучший подход для вашего случая прямо сейчас.

Если вы хотите иметь более обширные роли. Например, для редакторов, которые могут редактировать любые статьи. Есть два способа сделать это:

Если вам нужно несколько ролей и их разрешения настраиваются

Вам необходимо создать roleSchema, у которой будет имя роли, разрешения и т. Д. c. И в userSchema будет поле с именем role, которое соответствует role_id для каждого пользователя. Это позволит вам в будущем легко изменять разрешения и создавать новые роли через пользовательский интерфейс.

Если у вас мало ролей и вы уверены, что они не будут часто меняться

Вы можете просто определить для себя, что это за роли: например, 1 -> Редактор , 2 -> Подписчик, 3 -> Админ и др. c. И добавьте поле роли в userSchema, чтобы указать соответствующую роль. Это позволит вам иметь фиксированное разрешение для каждой роли. Теперь, когда вы делаете что-либо со статьей, вы можете получить роль и соответствующим образом отфильтровать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...