Mam trasę node.js / ekspresową, która najpierw sprawdza, czy plik cookie jest ustawiony, czy nie.

Działa to dobrze, teraz chcę wyjść z trasy, jeśli nie jest ustawiony plik cookie.

Moja trasa wygląda tak

app.post('/VerEmpresas', function(req, res) {


  if(req.cookies.cookieName1) {
    var cookie = JSON.parse(req.cookies.cookieName1);

    if (!cookie || cookie.codigo != 0) {
      console.log('error' + cookie.codigo);
    } 

    if (cookie && cookie.codigo == 0) {
      console.log('ok' + cookie.codigo);
    } 
  } else {

    console.log('no cookie');
  }


});

Zakładam, że mogę zastąpić konsolę.log ("OK") z moim zwykłym zadaniem jak połączenie bazy danych Knex () i pozwól, aby RES

Czy istnieje właściwy sposób ucieczki na trasie, jeśli nie ma plików cookie, więc ten kod po nie zostanie wykonany?

2
Ingolf Krauss 20 luty 2019, 22:04

2 odpowiedzi

Najlepsza odpowiedź

W innej części, wyślij odpowiedź błędów. Lub return

if (req.cookies.cookieName1) {
  var cookie = JSON.parse(req.cookies.cookieName1);
  if (!cookie || cookie.codigo != 0) {
    console.log('error' + cookie.codigo);
  }
  if (cookie && cookie.codigo == 0) {
    console.log('ok' + cookie.codigo);
  }
} else {
  res.status(401).send('error, no cookie'); // or return
  console.log('no cookie');
}
0
Luanf 20 luty 2019, 19:53

Kiedy próbujesz wykonać kontrole sesji lub podobne rzeczy, możesz rozważyć wykorzystanie oprogramowania pośredniego Express. Ponieważ możesz dodać taki sam czek na inne trasy, jak iw, w którym musisz mieć sesję.

Dla powyższego kodu możesz spróbować czegoś takiego:

function checkCookie (req, res, next) {
  if(req.cookies.cookieName1) {
    var cookie = JSON.parse(req.cookies.cookieName1);
    if (cookie && cookie.codigo == 0) {
      next();
    } else {
      return res.status(401).send('error' + cookie.codigo);
    }
  } else {
    return res.status(401).send('no cookie');
  }

})


app.post('/VerEmpresas', checkCookie, function(req, res) {
   // Implement your business logic here in place of console.log('ok');
});

//If you want this middleware for all the routes
//You can use the function like this app.use(checkCookie);

W powyższym kodzie widać, że w przypadku znalezienia plików cookie i jest ważny, dzwonisz do następnego zamiast wysyłania odpowiedzi, co oznacza, że przejdzie do następnego zadania w rurociągu trasy.

0
binariedMe 26 luty 2019, 13:36