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

187
Views
Redirigir al usuario después de la autorización donde el usuario hizo clic anteriormente

De alguna manera llegué al problema de pensar en cómo hacer que si la persona hace clic en un enlace, debería ser redirigido a la página de inicio de sesión si no está autorizado ya esa página si está autorizado. Esto suena fácil, pero el problema es que quiero hacer que si el usuario redirigió a una página donde debería estar autorizado, el usuario autorice y redirija a la misma página en la que hizo clic.

Por ahora, tengo una ruta protegida que se ve así: (Tengo el argumento fromPath para la próxima redirección, pero eso no funciona para mí).

 const ProtectedRoute = ({ isAllowed, redirectPath = "/sign-in", fromPath = null, children, }) => { const dispatch = useDispatch(); if (fromPath) dispatch(setURLPath(fromPath)); if (!isAllowed) { return <Navigate to={fromPath} replace />; } return children ? children : <Outlet />; };

Y aquí cómo se ve desde el lado de App.js :

 <Suspense fallback={<Spinner />}> <GlobalStyle /> <Routes> <Route path='/' element={ <ProtectedRoute isAllowed={roleLevel > 0} /> } > <Route path='bookings' element={<BookingsPage />} /> <Route path='single-booking/:id' element={<SingleBookingPage />} /> <Route path='documents' element={<DocumentsPage />} /> <Route path='my-account' element={<MyAccountPage />} /> <Route path='reservation' element={<ReservationPage />} /> </Route> </Route> <Route path='*' element={<NotFoundPage />} /> </Routes> </Suspense>
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

El componente ProtectedRoute debe capturar el objeto de location actual para la ruta a la que se accede y pasarlo en estado de ruta a la ruta de inicio de sesión.

 import { useLocation } from 'react-router-dom'; const ProtectedRoute = ({ isAllowed, redirectPath = "/sign-in", fromPath = null, children, }) => { const location = useLocation(); const dispatch = useDispatch(); if (fromPath) dispatch(setURLPath(fromPath)); if (!isAllowed) { return <Navigate to={fromPath} replace state={{ from: location }} />; } return children ? children : <Outlet />; };

Luego, el componente de inicio de sesión debe acceder al estado de la ruta aprobada y redirigir de nuevo a la ruta original a la que se accede.

 const location = useLocation(); const navigate = useNavigate(); ... const login = () => { ... const { from } = location.state || { from: { pathname: "/" } }; navigate(from, { replace: true }); };
about 4 years ago · Juan Pablo Isaza Report

0

Puede lograr esto pasando algunos parámetros (next_route), por ejemplo. y mantenerlo durante el proceso de inicio de sesión para que cuando termine pueda ser redirigido al lugar correcto (next_route)

about 4 years ago · Juan Pablo Isaza 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!