Как я могу, если пользователь вошел в систему, он может изменить только свой профиль nodejs / mongodb / mongoose / pug - PullRequest
0 голосов
/ 15 октября 2019

Так что в основном у меня есть динамический маршрут, который направляет к каждому имени пользователя в БД

router.get('/:username', function (req, res) {
  User.findOne({username:decodeURI(req.params.username)}, function (err, user) {
    if (err) throw err;
    if (user == null) {

    }else if(user !== null){
      res.render('user-profile', {
        user:user
      });
    }
  });
});

И я хочу проверить, например: является ли пользователь, вошедший в систему, "альфа", и он видит егопрофиль на этот URL: http://localhost:8080/users/alpha,, а затем отобразить его личную информацию, так что только он может видеть ее. И если "бета" хочет видеть профиль "альфа", он не видит никакой личной информации альфа

Я работаю с паспортом, локальной паспортом и экспресс-сессией

1 Ответ

1 голос
/ 15 октября 2019

Это не так сложно, как вы думаете. Итак, давайте обсудим сценарий. Есть два пользователя A и B. Здесь мы хотим добиться того, чтобы URL / users /: username отображал только общедоступную информацию пользователя, и если имя пользователя совпадает с именем пользователя, вошедшего в систему, в этом случае он также отображал бы личную информацию пользователя, вошедшего в систему. Пользователь

Очень простой подход - перечислить всю информацию (общедоступную и личную), но отображать личную информацию на странице профиля, только если идентификатор или имя пользователя для / users /: username совпадает с зарегистрированным в системе. user. (может быть легко получен через любой шаблонизатор)

если вы используете паспорт, то информация о зарегистрированных пользователях присоединяется к объекту req, который вы можете использовать, чтобы просто проверить, нужно ли отображать информацию илине.

...