Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

495
Visualizações
Cómo deshabilitar el enlace de la barra de direcciones después de iniciar sesión

Estoy tratando de crear un sistema de autenticación con reacción, todo funciona. Tengo una ruta privada si no hay ningún usuario, luego se redirige a la página de inicio de sesión.

Esta es mi ruta privada.

 import React from 'react' import { Navigate} from 'react-router-dom' import { useAuth } from '../../context/AuthContext' export default function PrivateRoute({children}) { const { currentUser } = useAuth() if(!currentUser){ return <Navigate to= '/login' /> } return children; }

El problema es que después de iniciar sesión me redirigen a la página de actualización del perfil, pero si ingreso el enlace de inicio de sesión en la barra de direcciones, se cierra la sesión y el usuario vuelve a la página de inicio de sesión. No sé cómo lidiar con eso.

este es mi contexto

 import React, {useContext, useEffect, useState} from 'react' import { auth } from '../firebase-config' const AuthContext = React.createContext() export function useAuth(){ return useContext(AuthContext) } export function AuthProvider({ children }) { const [currentUser, setCurrentUser] = useState() const [loading, setLoading] = useState(true) function singup(email, password){ return auth.createUserWithEmailAndPassword(email, password) } function login(email, password){ return auth.signInWithEmailAndPassword(email, password) } function logout(){ return auth.signOut() } function resetPassword(email){ return auth.sendPasswordResetEmail(email) } function updateEmail(email){ return currentUser.updateEmail(email) } function updatePassword(password){ return currentUser.updatePassword(password) } useEffect(() =>{ const unsubscribe = auth.onAuthStateChanged(user =>{ setCurrentUser(user) setLoading(false) }) return unsubscribe }, []) const value = { currentUser, login, singup, logout, resetPassword, updateEmail, updatePassword } return ( <AuthContext.Provider value={value}> { !loading && children } </AuthContext.Provider> ) }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Tema

Dado que está ingresando manualmente una URL en la barra de direcciones, cuando haga esto, volverá a cargar la página, lo que recargará su aplicación. Todo lo almacenado en el estado se borra. Para mantener el estado, deberá conservarlo en un almacenamiento a largo plazo, es decir, localStorage.

Solución

Al usar currentUser , puede inicializar el usuario actual desde el almacenamiento local y usar un useEffect para conservar el currentUser en el almacenamiento local.

Ejemplo:

 export function AuthProvider({ children }) { const [currentUser, setCurrentUser] = useState( JSON.parse(localStorage.getItem("currentUser")) ); const [loading, setLoading] = useState(true); useEffect(() => { localStorage.setItem("currentUser", JSON.stringify(currentUser)); }, [currentUser]); ... useEffect(() =>{ const unsubscribe = auth.onAuthStateChanged(user => { setCurrentUser(user); setLoading(false); }); return unsubscribe; }, []); const value = { currentUser, login, singup, logout, resetPassword, updateEmail, updatePassword }; return ( <AuthContext.Provider value={value}> {!loading && children} </AuthContext.Provider> ); }
about 4 years ago · Juan Pablo Isaza Relatório

0

Cuando vuelve a ingresar un enlace en la barra de direcciones, elimina todo su contexto guardado, si desea una forma simple de guardar el estado de inicio de sesión, puede guardar el objeto currentUser en localStorage (esta es una forma muy básica, no recomendada en sitios web reales), y luego, cuando la página se carga, puede usar useEffect para obtener esos datos del almacenamiento local y configurar currentUser para el usuario que guardó en el almacenamiento local.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda