Cara menggunakan penghalaan API dalam NextJS 13
P粉903969231
P粉903969231 2023-09-07 10:55:40
0
1
653

Apabila menggunakan Express, saya pernah menyimpan pengguna seperti 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;

Tetapi bagaimana untuk melakukan ini menggunakan penghalaan API NextJS 13 dan perisian tengah serta cara menggunakan kuki. Baru kepada NextJS jadi sebarang bantuan amat dihargai.

P粉903969231
P粉903969231

membalas semua(1)
P粉176980522

Dalam Next.js, anda boleh menggunakan sambungan kuki pada NextRequest dan NextResponse untuk membaca dan memanipulasi kuki. Kaedah khusus adalah seperti berikut:

Pertama, anda perlu mengimport kuki dari seterusnya/pengepala:

import { cookies } from 'next/headers'

Kemudian, anda boleh mendapatkan biskut seperti ini:

const cookieStore = cookies()
const token = cookieStore.get('token')

Untuk menetapkan kuki, anda perlu mengembalikan respons baharu menggunakan pengepala Set-Cookie:

return new Response('Hello, Next.js!', {
  status: 200,
  headers: { 'Set-Cookie': `token=${token}` },
})

Anda juga boleh menggunakan objek NextRequest untuk membaca kuki:

export async function GET(request) {
  const token = request.cookies.get('token')
}

Untuk permintaan masuk, kuki mempunyai kaedah berikut: dapatkan, dapatkanSemua, tetapkan dan padam kuki. Anda boleh gunakan perlu menyemak sama ada kuki wujud, atau kosongkan untuk memadam semua kuki.

Untuk respons keluar, kuki mempunyai kaedah berikut dapatkan, dapatkanSemua, tetapkan dan padam.

Berikut adalah contoh cara menggunakan kaedah ini:

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
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan