Nextjs의 middleware에서 Laavel Sanctum의 인증을 통과하는 방법
하고 싶은 일
넥스트js의 중간부품을 사용하려면 LaavelSanctum(SPA 인증)의 로그인 여부 판정에 따라 분배합니다.
막힌 곳
고객 측의 요청이 있을 경우 로그인 후 SET-COOKIEE의 응답이 되돌아오는 것을 포함하기 때문에 일단 로그인하면 인증 정보를 옮기는 것에 특별히 신경 쓰지 않는다.
브라우저에서 요청한 것이 아니라 node 서버에서api 서버로 보낸 요청에 대해 아무것도 하지 않으면 산텀에 요청이 들어오기 때문에 산텀이 검사할 인증 정보를 적절히 지정해야 한다.
메서드
apiServer.ts
import axios from "axios";
export const apiServer = axios.create({
baseURL: process.env.API_ENDPOINT,
responseType: 'json',
withCredentials: true,
headers: {
"Content-Type": "application/json",
}
})
pages/_middleware.tsimport {NextFetchEvent, NextRequest, NextResponse} from "next/server";
import fetchAdapter from "@vespaiach/axios-fetch-adapter";
import {apiServer} from "../../utils/apiServer";
export default async function middleware(req: NextRequest, ev: NextFetchEvent) {
apiServer.defaults.adapter = fetchAdapter
const {data} = await apiServer.get('http://web:80/api/auth/me', {
headers: {
Cookie: req.headers.get('cookie') ?? '',
referer: req.headers.get('referer') ?? ''
}
})
if (!data.authenticated) {
return NextResponse.redirect(`${process.env.APP_URL}/auth/login`)
}
return NextResponse.next()
}
아래 기사에서 설명한 바와 같이 산텀을 이용해 인증하는 경우 라벨 측에서 쿠키에 포함된 정보 외에 리퍼러도 검사하기 때문에 최소한의 쿠키와 리퍼러를 제목에 설정해야 한다.Reference
이 문제에 관하여(Nextjs의 middleware에서 Laavel Sanctum의 인증을 통과하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nicopin/articles/2cf7d90edc8b07텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)