Comment utiliser le routage API dans NextJS 13
P粉903969231
P粉903969231 2023-09-07 10:55:40
0
1
602

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粉903969231
P粉903969231

répondre à tous(1)
P粉176980522

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
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!