Saltar al contenido principal

LogoutManager

Cierra la sesión según las respuestas de fetch. De forma predeterminada se activa con las respuestas de estado 401 (Unauthorized).

implements

LogoutManager implements Manager

Uso​

index.tsx
import {
DataProvider,
LogoutManager,
getDefaultManagers,
} from '@data-client/react';
import { createRoot } from 'react-dom/client';
import App from './App';

const managers = [new LogoutManager(), ...getDefaultManagers()];

createRoot(document.body).render(
<DataProvider managers={managers}>
<App />
</DataProvider>,
);

Manejador de logout personalizado​

import { unAuth } from '../authentication';

const managers = [
new LogoutManager({
handleLogout(controller) {
// call custom unAuth function we defined
unAuth();
// still reset the store
controller.resetEntireStore();
},
}),
...getDefaultManagers(),
];
consejo

Usa controller.invalidateAll para borrar solo una parte de la caché.

import { unAuth } from '../authentication';

const myDomain = 'http://test.com';
const testKey = (key: string) => key.startsWith(`GET ${myDomain}`);

const managers = [
new LogoutManager({
handleLogout(controller) {
// call custom unAuth function we defined
unAuth();
// still reset the store
controller.invalidateAll({ testKey });
},
}),
...getDefaultManagers(),
];

Miembros​

handleLogout(controller)​

De forma predeterminada simplemente llama a controller.resetEntireStore()

Esto debería ser suficiente si el estado de inicio de sesión se determina por la existencia de una entidad de usuario en el store de Reactive Data Client. Sin embargo, puedes sobrescribir este método mediante herencia si hay que hacer más cosas.

shouldLogout(error)​

protected shouldLogout(error: UnknownError) {
// 401 indicates reauthorization is needed
return error.status === 401;
}

Ejemplo de Github​

Explora el ejemplo github-app

More Demos