Firebase Auth Next.JS 与中间件

问题描述 投票:0回答:1

那边的开发朋友们大家好。

我在 Next(TypeScript) 中遇到 Firebase 身份验证问题。

我想用中间件来控制权限访问之类的东西。

但是,当我使用

auth.currentUser
时,它总是为空,所以,我将
useContext
AuthContext.Provider
useAuth
挂钩使用。但是,在中间件中我不能使用它..

那么如何将 Firebase-well 与中间件结合使用?

这是我的代码库和我想要的。

import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
import { auth } from './utils/firebase/config';

const protectedRoutes = ["/article/add"];

export async function middleware(request: NextRequest) {
  const currentUser = auth.currentUser;
  console.log(`currentUser is : ${currentUser}`);
  
  const user = null;
  if (user == null && protectedRoutes.includes(request.nextUrl.pathname)) {
    const absoluteURL = new URL("/login", request.nextUrl.origin);
    return NextResponse.redirect(absoluteURL.toString());
  }
}

export const config = {
    matcher: [
      /*
       * Match all request paths except for the ones starting with:
       * - _next/static (static files)
       * - _next/image (image optimization files)
       * - favicon.ico (favicon file)
       * Feel free to modify this pattern to include more paths.
       */
      '/((?!_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)',
    ],
  }

请告诉我您的意见。 🙏

firebase next.js middleware
1个回答
0
投票

我其实也遇到了同样的问题,最后我把登录的

getIdToken()
结果存储到了cookie中。

通过cookie中的访问令牌(JWT形式),您可以在服务器操作、API处理程序和中间件中访问它。为了验证它,一个简单的 JWT 解码器包可以解码 JWT 并相应地验证

iat
/
exp

© www.soinside.com 2019 - 2024. All rights reserved.