Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

99
Views
Navegación autenticada ReactJS

Utilicé react-router-dom para la navegación ... pero mi problema es que no tengo autenticación y la pantalla del tablero está visible durante milisegundos.

Aplicación.js

 <Route index path="/" element={<ProtectedRoute><Dashboard /></ProtectedRoute>} /> <Route path="/Login" element={<Login />} />

RutaProtegida

 const ProtectedRoute = ({ children }) => { const { user } = useMyContext(); if (!user) { return <Navigate to="/Login" />; } return children; }; export default ProtectedRoute;

Iniciar sesión.js

al hacer clic..

 await login(data.get('email'), data.get('password')); navigate('/', { replace: true })

Contexto.js

 function login(email, password) { return signInWithEmailAndPassword(auth, email, password) } function logOut() { return signOut(auth); } useEffect(() => { const unsubscribe = onAuthStateChanged(auth, (currentuser) => { setUser(currentuser); }); return () => { unsubscribe(); } }, [])

¿Cómo puedo proteger mi pantalla protegida del acceso no autorizado?

about 4 years ago · Santiago Gelvez
1 answers
Answer question

0

El problema es que su componente ProtectedRoute no espera a que se confirme el estado de autenticación. En otras palabras, el estado de user predeterminado enmascara el estado autenticado o no autenticado.

Debería representar un indicador de carga de forma condicional mientras onAuthStateChanged realiza la primera llamada para determinar el estado de autenticación del usuario. Para el valor de estado user inicial, utilice un valor que no sea un objeto de usuario definido en el caso de un usuario autenticado ni null en el caso de un usuario no autenticado. undefined es un buen valor inicial.

Ejemplo:

Contexto

 const [user, setUser] = React.useState(); // initially undefined function login(email, password) { return signInWithEmailAndPassword(auth, email, password); } function logOut() { return signOut(auth); } useEffect(() => { const unsubscribe = onAuthStateChanged(auth, (currentuser) => { setUser(currentuser); }); return unsubscribe; }, []);

RutaProtegida

 const ProtectedRoute = ({ children }) => { const { user } = useMyContext(); if (user === undefined) { return null; // or loading indicator/spinner/etc } return user ? children : <Navigate to="/Login" replace />; };
about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!