Pakiety
NextAuth (Auth.js)
Jak wpiąć Auth.js w łańcuch NEMO, żeby sesja rozwiązana raz była dostępna dla wszystkich kolejnych funkcji bez ponownego odpytywania bazy.
Instalacja
NextAuth podłącz do projektu według oficjalnych przewodników:
Auth.js Quickstart albo przykładowa aplikacja Next.js.
Pomiń w nich rozdział o konfiguracji middleware - tę część zastępują kroki poniżej.
Podmień zawartość pliku middleware
Handler auth z Auth.js wywołujemy w łańcuchu before, a zalogowanego użytkownika
przekładamy z jego callbacku do event.storage.
import { auth as authMiddleware } from "@/auth";
import { type MiddlewareConfig, type GlobalMiddlewareConfig, createNEMO } from '@zanreal/nemo';
const globalMiddlewares: GlobalMiddlewareConfig = {
before: async (request, event) => {
await authMiddleware((_request, _event) => {
const { auth } = _request;
event.storage.set("user", auth?.user);
})(request, event);
}
}
const middlewares: MiddlewareConfig = {
'/': [
async (request, event) => {
console.log('There is NEMO', event.storage.get("user"));
},
],
};
export const proxy = createNEMO(middlewares, globalMiddlewares);
export const config = {
matcher: ['/((?!_next/|_static|_vercel|[\\w-]+\\.\\w+).*)'],
};
import { auth as authMiddleware } from "@/auth";
import { type MiddlewareConfig, type GlobalMiddlewareConfig, createNEMO } from '@zanreal/nemo';
const globalMiddlewares: GlobalMiddlewareConfig = {
before: async (request, event) => {
await authMiddleware((_request, _event) => {
const { auth } = _request;
event.storage.set("user", auth?.user);
})(request, event);
}
}
const middlewares: MiddlewareConfig = {
'/': [
async (request, event) => {
console.log('There is NEMO', event.storage.get("user"));
},
],
};
export const middleware = createNEMO(middlewares, globalMiddlewares);
export const config = {
matcher: ['/((?!_next/|_static|_vercel|[\\w-]+\\.\\w+).*)'],
};
Od tej pory sięgasz po klucz
user w storage tam, gdzie go akurat potrzebujesz. 🎉Czy ta strona była pomocna?
M↓obsługiwane.