인증 미들웨어
Bearer 토큰 검증
보호된 리소스 접근 제어
function authMiddleware(req) {
const url = new URL(req.url);
// 공개 경로
const publicPaths = ["/login", "/register", "/"];
if (publicPaths.some(path => url.pathname === path)) {
return { authenticated: true };
}
// Authorization 헤더 확인
const authHeader = req.headers.get("Authorization");
if (!authHeader) {
return {
authenticated: false,
error: new Response("Unauthorized", { status: 401 })
};
}
// 토큰 검증
const token = authHeader.replace("Bearer ", "");
if (token === "valid-token-123") {
return { authenticated: true, user: { id: 1, name: "User" } };
}
return { authenticated: false, error: new Response("Invalid token", { status: 401 }) };
}
사용 예시
const server = Bun.serve({
port: 3000,
fetch(req) {
const auth = authMiddleware(req);
if (!auth.authenticated) return auth.error;
return new Response("Protected content");
}
});