проверить, зарегистрирован ли текущий пользователь - PullRequest
2 голосов
/ 29 апреля 2019

У меня есть раздел профиля в моем угловом приложении, и сейчас у меня есть 5 пользователей, скажем.

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

router.get('/change-password/:username', (req, res) => {
  User.findOne({
    username: req.params.username
  }).then(user => {
    if (user) {
      res.status(200).json(user);
    } else if (!user) {
      res.status(404).json({
        message: 'user not found'
      });
    }
  });
});

что если пользователь A вошел в систему и изменил параметр на B, а затем изменил пароль? есть ли способ не передать параметр и получить текущий пользователь, который вошел в систему

1 Ответ

2 голосов
/ 29 апреля 2019

По сути, это так, когда вы входите в систему с бэкэнда, вы отправляете ответ с токеном на фронтэнд. Вы сохраняете этот токен в локальном хранилище, чтобы иметь его в каждом запросе к внутренней части. Ими вы используете функцию промежуточного программного обеспечения, чтобы проверить, указан ли токен в заголовке запроса как носитель. Таким образом, ответ таков: вам не нужно проверять аутентификацию при каждом запросе, вы просто проверяете, предоставлен ли токен промежуточным программным обеспечением и является ли он правильным. Если вы используете Express, большинство приложений используют промежуточное ПО в классе обслуживания auth , например :

module.exports.isAuthorized  = function(req, res, next) {

    User.findById(req.session.userId).exec(function (error, user) {
        if (error) {
            return next(error);
        } else {      
            if (user === null) {     
                var err = new Error('Not authorized! Go back!');
                err.status = 400;
                return next(err);
            } else {
                return next();
            }
        }
    });
}

На узлах node.js:

var auth = require('./auth');

// GET route after registering
router.get('/clientPage', auth.isAuthorized, function (req, res, next) {console.log("1114");
    res.sendFile(path.join(__dirname + '/../views/clientPage.html'));
});

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

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