web-dev-qa-db-fra.com

middleware de route nextjs pour l'authentification

J'essaie de trouver une façon appropriée de faire l'authentification, qui je sais est un sujet délicat sur la page de problème GitHub .

Mon authentification est simple. Je stocke un jeton JWT dans la session. Je l'envoie à un autre serveur pour approbation. Si je reviens vrai, nous continuons, si je reviens faux, cela efface la session et les envoie à la page principale.

Dans mon server.js fichier J'ai les éléments suivants (note - j'utilise l'exemple de nextjs learn et j'ajoute simplement isAuthenticated):

function isAuthenticated(req, res, next) {
  //checks go here

  //if (req.user.authenticated)
   // return next();

  // IF A USER ISN'T LOGGED IN, THEN REDIRECT THEM SOMEWHERE
  res.redirect('/');
}

server.get('/p/:id', isAuthenticated, (req, res) => {
  const actualPage = '/post'
  const queryParams = { id: req.params.id }
  app.render(req, res, actualPage, queryParams)
})

Cela fonctionne comme prévu. Si je rafraîchis la page /p/123, il sera redirigé vers le /. Cependant, si j'y vais via un next/link href, ce n'est pas le cas. Je pense que c'est parce qu'il n'utilise pas express à ce stade, mais le routage personnalisé du suivant.

Existe-t-il un moyen de préparer un chèque pour chaque single next/link qui ne passe pas par express pour que je puisse m'assurer que l'utilisateur est connecté?

9
bryan

Tim du chat suivant m'a aidé à résoudre ce problème. La solution peut être trouvée ici mais je vais le citer pour que vous puissiez tous voir:

J'ai également créé un exemple de modèle de squelette que vous pouvez consulter.

14
bryan