Доступ к маршруту, отправка предупреждения об ошибке и перенаправление - PullRequest
0 голосов
/ 07 сентября 2018

Я использую nodejs, expressjs, javascript ...

У меня есть эта функция «промежуточного программного обеспечения», которая используется, когда кто-то пытается получить доступ к одному маршруту, который не имеет доступа, когда он не вошел в систему, но я не могу отправить предупреждение и перенаправление, а также ответ, как я могу это сделать?

function isLoggedIn (req, res, next) 
{

    if (req.isAuthenticated()) {
        return next();
    }

    res.send('<script>alert("You need to be authenticated to access this page")</script>'); 
    res.redirect('/');

}

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

@ Майкл прав.

Вы должны отделить логику сервера от клиента.

  1. Сервер должен знать, вошли вы в систему или нет
  2. Сервер НЕ должен знать, как вы говорите своим пользователям.

Middlwere должен просто отправить 401 статус, если он не аутентифицирован. Затем клиент проверяет, было ли это 200 (OK) или 401 (Unauthorized), и показывает пользовательский контент в соответствии со статусом

function isLoggedIn (req, res, next) 
{

    if (req.isAuthenticated()) {
      res.status(200).send('Welcome')
    } else {
      res.status(401).send('You are not allowed')
    }           
}
0 голосов
/ 07 сентября 2018

Я не рекомендую делать это (отправка html в ответ на стороне сервера) Вместо: Отправьте json с переменной, которая скажет вам на стороне клиента сделать предупреждение:

res.json({ success: false });

Затем на стороне клиента вы можете предупредить сообщение, если! Success и перенаправить.

...