使用 Express 時,我曾經儲存像 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;
但是如何使用 NextJS 13 API 路由和中間件以及如何使用 cookie 來做到這一點。 NextJS 的新手,因此我們將不勝感激。
在 Next.js 中,您可以使用 NextRequest 和 NextResponse 上的 cookie 擴充功能來讀取和操作 cookie。具體方法如下:
首先,您需要從 next/headers 匯入 cookie:
然後,你可以得到這樣的cookie:
要設定 cookie,您需要使用 Set-Cookie 標頭傳回新的回應:
您也可以使用 NextRequest 物件來讀取 cookie:
對於傳入的請求,cookie 有以下方法:get、getAll、set 和 delete cookies。您可以使用 has 檢查 cookie 是否存在,或使用clear 刪除所有 cookie。
對於傳出回應,cookie 具有以下方法 get、getAll、set 和 delete。
以下是如何使用這些方法的範例: