안녕하세요 middleware 질문드립니다.
모든페이지에서 유저 정보가 필요해서, middleware에서 유저 정보 api 호출하고 리턴 값을 모든 페이지에 전달하고 싶은데 가능할까요??
추가로, middleware에서 api 호출하는게 적합한 방법인가요??
로그인 -> 토큰 값 cookie에 저장 - > middleware에서 쿠키에 저장된 토큰 값으로 getUser() 호출해서 유효한 정보면 그 값을 리턴 하고 아니면 로그인 페이지나 메인페이지로 이동
import { NextResponse } from "next/server";
export default async function middleware(request, response, next) {
const token = request.cookies.get("token")?.value
? request.cookies.get("token").value
: null;
let getUser;
try {
if (token) {
const data = await (
await fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/api/user-info`, {
headers: { Authorization: `Bearer ${token}` },
})
).json();
getUser = data?.code === 0 ? { ...data } : false;
request.apiData = getUser;
console.log(request.apiData, "requestttttttt");
// return getUser;
}
} catch (error) {
// response.status(500).json({ error: "An error occurred" });
return NextResponse.redirect(new URL("/", request.url));
}
console.log(getUser, "mid");
if (request.nextUrl.pathname.startsWith("/management")) {
if (getUser === false || getUser === "undefined" || token === null) {
console.log(token, "token");
return NextResponse.redirect(new URL("/login", request.url));
}
}
if (request.nextUrl.pathname.startsWith("/main-login")) {
if (getUser === false || getUser === "undefined" || token === null) {
console.log(token, "token");
return NextResponse.redirect(new URL("/", request.url));
}
}
}