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
main.ts
import { createApp } from 'vue';
import {
DataClientPlugin,
LogoutManager,
getDefaultManagers,
} from '@data-client/vue';
import App from './App.vue';
const managers = [new LogoutManager(), ...getDefaultManagers()];
const app = createApp(App);
app.use(DataClientPlugin, { managers });
app.mount('#app');
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;
}