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é?
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:
_app.js
getInitialProps
et rediriger comme ceciJ'ai également créé un exemple de modèle de squelette que vous pouvez consulter.