Привет, друзья-разработчики.
Я столкнулся с проблемой аутентификации 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)$).*)',
],
}
Пожалуйста, дайте мне знать ваше мнение. 🙏
Спасибо за ваше мнение. Нет ли другого решения без зависимости (библиотеки)?

На самом деле я столкнулся с той же проблемой, и в конце концов я сохранил результат getIdToken() входа в систему в файлы cookie.
Используя токен доступа (форму JWT) в файлах cookie, вы можете получить к нему доступ в действии сервера, обработчике API и промежуточном программном обеспечении. Чтобы вы могли это проверить, простой пакет декодера JWT может декодировать JWT и проверить iat/exp соответственно.
Привет. Чтобы использовать Firebase Auth с промежуточным программным обеспечением, есть замечательная библиотека next-firebase-auth-edge, которая поможет вам добиться этого. Есть также два примера проектов, которые показывают, как его настроить.