Soy bastante nuevo en el uso de este marco, así que tengan paciencia conmigo.
Intenté seguir los documentos (3.12.1) en el proveedor de autenticación y pude autenticar al usuario desde mi backend.
Sin embargo, este código
logout: () => { localStorage.removeItem("auth"); return Promise.resolve(); },sigue desconectándome y me pide que inicie sesión para continuar
Aquí está mi código...
authProvider.js
const authProvider = { logout: () => { localStorage.removeItem("auth"); return Promise.resolve(); }, login: ({ username, password }) => { const request = new Request("http://localhost:3000/api/auth", { method: "POST", body: JSON.stringify({ username, password }), headers: new Headers({ "Content-Type": "application/json" }), }); return fetch(request) .then((response) => { if (response.status < 200 || response.status >= 300) { throw new Error(response.statusText); } return Promise.resolve(); }) .then((auth) => { localStorage.setItem("auth", JSON.stringify(auth)); }) .catch(() => { throw new Error("Network error"); }); }, checkError: ({ status }) => { if (status === 401 || status === 403) { localStorage.removeItem("username"); return Promise.reject(); } return Promise.resolve(); }, checkAuth: () => { localStorage.removeItem("username"); return localStorage.getItem("username") ? Promise.resolve() : Promise.reject(); }, getPermissions: () => Promise.resolve(), }; export default authProvider;Respuesta que recibo del servidor
{ "success": true, "message": "Successfully Logged In!", "userData": { "user_id": "601d25ca48305c2ef1e6a42c", "firstName": "test", "lastName": "test", "username": "test@mail.com", "token": "eyJhbGciOiJIUzI1NiJ9.NjAxZDI1Y2E0ODMwNWMyZWYxZTZhNDJj.WvYB9-H2kVTtCvRB4YumJe17EIIb0Kiz2t8h1g-IcwY" } }Bueno, por lo que veo, su función checkAuth siempre rechazará la Promesa, que automáticamente redirige a logout .
¿Por qué está configurando la auth dentro de localStorage y luego en checkAuth está buscando un nombre de username (aunque siempre lo elimina al principio)?
Debe sincronizar estas dos funciones y debería estar listo para comenzar.