Firebase Auth Next.JS с промежуточным программным обеспечением

Привет, друзья-разработчики.

Я столкнулся с проблемой аутентификации Firebase в Next (TypeScript).

Я хочу контролировать с помощью промежуточного программного обеспечения что-то вроде доступа к разрешениям.

Но когда я использую 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.info(`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 Auth с промежуточным программным обеспечением, есть замечательная библиотека next-firebase-auth-edge, которая поможет вам добиться этого. Есть также два примера проектов, которые показывают, как его настроить.

heuberg_industries 20.05.2024 19:41

Спасибо за ваше мнение. Нет ли другого решения без зависимости (библиотеки)?

Sam B 21.05.2024 03:29
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
2
2
671
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На самом деле я столкнулся с той же проблемой, и в конце концов я сохранил результат getIdToken() входа в систему в файлы cookie.

Используя токен доступа (форму JWT) в файлах cookie, вы можете получить к нему доступ в действии сервера, обработчике API и промежуточном программном обеспечении. Чтобы вы могли это проверить, простой пакет декодера JWT может декодировать JWT и проверить iat/exp соответственно.

Другие вопросы по теме

Похожие вопросы

Next.js 14: ошибка неопределенного значения при сериализации продуктов в getServerSideProps
Flutter run не работает для проекта Firebase Android. Ошибка: двоичная версия метаданных — 1.9.0, ожидаемая версия — 1.7.1
Firebase Storage putFile/putData не работает
Ошибка: [auth/missing-client-identifier] В этом запросе отсутствует действительный идентификатор приложения, проверки целостности Play и проверки reCAPTCHA не увенчались успехом
Можно ли настроить Firebase так, чтобы при отключении пользователя срок действия его токена истекал?
Получил тот же ответ от Firestore при получении данных с помощью startAfter
Аргумент типа "EnvironmentProviders" нельзя назначить параметру типа "ImportProvidersSource".ts(2345) в проекте Angular Firebase
Войдите с помощью Google в Firebase, используя новый API диспетчера учетных данных
Init Genkit Firebase не поддерживается
Firebase: Gemini API с использованием Vertex AI – Ограничьте использование пользователями клиентского API