Lorsque j'utilisais Express, j'avais l'habitude de stocker les utilisateurs comme request.user
:
import jwt from "jsonwebtoken"; import asyncHandler from "express-async-handler"; import User from "../models/userModel.js"; const protect = asyncHandler(async (req, res, next) => { let token; token = req.cookies.jwt; if (token) { try { const decoded = jwt.verify(token, process.env.JWT_SECRET); req.user = await User.findById(decoded.userId).select("-password"); next(); } catch (error) { res.status(401); throw new Error("Not authorized , invalid token"); } } else { res.status(401); throw new Error("Not authorized , no token"); } }); export { protect }; And I was able to get the current user like this : const createPost = asyncHandler(async (req, res) => { const { content, image } = req.body; const user = req.user;
Mais comment faire cela en utilisant le routage et le middleware de l'API NextJS 13 et comment utiliser les cookies. Nouveau sur NextJS, toute aide serait grandement appréciée.
Dans Next.js, vous pouvez utiliser les extensions de cookies sur NextRequest et NextResponse pour lire et manipuler les cookies. La méthode spécifique est la suivante :
Tout d'abord, vous devez importer les cookies depuis next/headers :
Ensuite, vous pouvez obtenir un cookie comme celui-ci :
Pour définir un cookie, vous devez renvoyer une nouvelle réponse en utilisant l'en-tête Set-Cookie :
Vous pouvez également utiliser l'objet NextRequest pour lire les cookies :
Pour les demandes entrantes, les cookies ont les méthodes suivantes : get, getAll, set et delete cookies. Vous pouvez utiliser a pour vérifier si un cookie existe, ou effacer pour supprimer tous les cookies.
Pour les réponses sortantes, le cookie dispose des méthodes suivantes get, getAll, set et delete.
Voici des exemples d'utilisation de ces méthodes :