Il tuo provider di autenticazione
Su 0.24 un getter di token autentica solo le richieste HTTP e il socket realtime rimane anonimo.
Quando gli utenti accedono con un provider personalizzato (Clerk, Firebase Auth o
una sessione già presente nell’app), client.auth non viene coinvolto. Fornisci
invece al client un getter per il token del provider. Viene interpellato ogni volta
che è necessario un token: per ogni richiesta HTTP e ogni volta che il socket
realtime si autentica.
import { createRebaseClient } from "@rebasepro/client";
const client = createRebaseClient({ baseUrl: import.meta.env.VITE_API_URL });
client.setAuthTokenGetter(() => clerk.session?.getToken() ?? Promise.resolve(null));
// Optional: let Clerk recover a refused token, on HTTP and the socket alike.client.setOnUnauthorized(async () => { await clerk.session?.reload(); return true;});
// The socket authenticates as the Clerk user.client.data.posts.listen({}, (response) => render(response.data));- Il getter ha la priorità sulla sessione del client stesso. Quando restituisce
nullo genera un’eccezione, il client invia il token che possiede, se presente: quello della sua sessione, uno impostato conclient.setToken()o l’opzionetoken. - L’opzione
tokenviene letta ogni volta che è necessario un token, finchésetToken()o un accesso non la sostituisce, quindi può essere dichiarata come getter (get token() { return currentToken; }). setOnUnauthorizedcopre un errore 401 su HTTP e un errore di autenticazione sul socket, e sostituisce il refresh della sessione proprio del client.
Il backend deve verificare il token del provider: vedi
Adapter di autenticazione personalizzati. Nel pannello
di amministrazione, imposta il getter sul client che passi a <Rebase client>
(Il tuo provider di autenticazione).