Как я реализовал стратегию разрешений соответственно с группой пользователей? - PullRequest
0 голосов
/ 08 января 2019

Я строю систему, которая требует много пользователей. Пользователи принадлежат к разным группам. У каждой группы есть массив, который содержит их разрешения (например, «homepage»: «rw», «profile»: «rw»). Каков наилучший способ реализовать это в моем коде, думая о поддержке?

Только пользователи с разрешением «владелец» могут удалить. Вот маршрут моего пользователя:

app.route('/users/delete/:userId').put(users.delete);

app.route('/users').get(users.checkUser, users.list);

(удаление маршрута фактически изменяет состояние «статуса» у пользователя, поэтому запрос «PUT»). Например, все пользователи вызывают checkUser.

Я думаю о создании промежуточного программного обеспечения на каждом защищенном маршруте и выполнении его, но этот подход имеет несколько проблем, которые необходимо поддерживать.

Вот мой пользовательский контроллер, который проверяет токен JWT, переданный от пользователя:

exports.checkUser = function (req, res, next) {
  passport.authenticate('jwt', { session: false }, (err, user, info) => {

    if (err) {
      console.log(err);
      return next(err);
    }

    if (!user) {
      console.log("Não autenticado");
      return res.sendStatus(403);
    } else {
      console.log("Autenticado");
      return next();
    }
  })(req, res, next);
};

У кого-нибудь есть советы?

1 Ответ

0 голосов
/ 16 января 2019

Похоже, вы пытаетесь построить sftp сервер / клиентскую инфраструктуру.

Вместо того, чтобы писать один снизу вверх, я бы посоветовал вам взглянуть на то, что сделали другие, поскольку создание такого рода приложения может занять довольно много времени.

Справка:

https://github.com/atmoz/sftp

...