Maison > Questions et réponses > le corps du texte
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.
P粉1769805222023-09-08 00:18:14
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 :
import { cookies } from 'next/headers'
Ensuite, vous pouvez obtenir un cookie comme celui-ci :
const cookieStore = cookies() const token = cookieStore.get('token')
Pour définir un cookie, vous devez renvoyer une nouvelle réponse en utilisant l'en-tête Set-Cookie :
return new Response('Hello, Next.js!', { status: 200, headers: { 'Set-Cookie': `token=${token}` }, })
Vous pouvez également utiliser l'objet NextRequest pour lire les cookies :
export async function GET(request) { const token = request.cookies.get('token') }
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 :
import { NextResponse } from 'next/server' import type { NextRequest } from 'next/server' export function middleware(request: NextRequest) { let cookie = request.cookies.get('nextjs') console.log(cookie) // => { name: 'nextjs', value: 'fast', Path: '/' } const allCookies = request.cookies.getAll() console.log(allCookies) // => [{ name: 'nextjs', value: 'fast' }] request.cookies.has('nextjs') // => true request.cookies.delete('nextjs') request.cookies.has('nextjs') // => false const response = NextResponse.next() response.cookies.set('vercel', 'fast') response.cookies.set({ name: 'vercel', value: 'fast', path: '/', }) cookie = response.cookies.get('vercel') console.log(cookie) // => { name: 'vercel', value: 'fast', Path: '/' } return response }