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

572
Views
Ruta de reacción al subdominio desde el dominio de segundo nivel

Hay una página de inicio de sesión en mi sitio React que tiene esta URL (localmente)

http://localhost:3000/iniciar sesión

Cuando el usuario inicia sesión, el servidor devuelve un montón de información sobre el usuario, incluida una lista de empresas, cada una de las cuales tiene un elemento de subdominio. Todos estos datos se colocan en localStorage al iniciar sesión.

Mi objetivo aquí es que cuando un usuario inicie sesión en el sitio, será redirigido inmediatamente a la página de inicio pero con un subdominio que coincida con la primera empresa en su lista de empresas devueltas desde el servidor.

Esto es lo que tienen hasta ahora:

  1. Este archivo es un archivo de utilidad global que importaré a la página de inicio de sesión:
 const getSubdomainHref = function() { const storedUser = JSON.parse(localStorage.getItem("user") || '{}') let newHref = window.location.origin if (storedUser.companies.length > 0) { newHref = window.location.protocol + '//' + storedUser.companies[0].subdomain + '.' + window.location.host } return newHref } export { getSubdomainHref };
  1. Y esto es parte de mi página de inicio de sesión (la parte importante)
 import React, { useEffect } from 'react'; import { useNavigate } from "react-router-dom"; import { getSubdomainHref } from "./../utils"; //other code useEffect(() => { if (user.user_type !== 'anonymous') { let newHref = getSubdomainHref() navigate(newHref + "/"); } }, [user, navigate]);

Esto no funciona, lo que sucede cuando inicio sesión es esto.

Página inicial:

http://localhost:3000/iniciar sesión

Página resultante: (nota, el subdominio devuelto es 'cbd')

http://localhost:3000/iniciar sesión/http://cbd.localhost:3000/

¿Cómo puedo hacer que esto funcione?

Tenga en cuenta que, mientras escribo esto, se me ocurrió otra idea: el problema del almacenamiento local de "localhost" no está disponible en "cbd.localhost". No estoy seguro de si esto es un problema todavía, pero podría serlo.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

El problema aquí es que react-router-dom solo maneja la navegación interna. Significa que solo puede navegar o redirigir a las URL dentro de la misma aplicación de reacción, es decir, http://localhost:3000 . Y es por eso que el subdominio se interpreta como una ruta interna y se agrega a la ruta actual.

Si necesita navegar a una URL externa, puede usar el objeto window.location . Puede crear un componente separado para la navegación o simplemente usarlo directamente como se muestra a continuación:

 import React, { useEffect } from 'react'; import { getSubdomainHref } from "./../utils"; useEffect(() => { if (user.user_type !== 'anonymous') { let newHref = getSubdomainHref() window.location.href = newHref; } }, [user]);
about 4 years ago · Juan Pablo Isaza Report

0

Prince Mittal es 100% correcto. Esto es lo que he elegido hacer para resolver el problema:

  1. en la página de inicio de sesión, si aún no está iniciando sesión desde el subdominio correcto, lo que sucederá es que obtendrá como respuesta un token de uso único que se puede usar durante un breve período de tiempo para iniciar sesión.

  2. una vez que se recibe el token, usaré el método window.location.href para redirigir mi sitio a una página especial que crearé específicamente para este propósito que tomará el token y luego lo pasará inmediatamente al backend para que el usuario pueda volver a autenticarse. la URL se verá así: http://subdomain.localhost:3000/redirect/CODE

  3. una vez que el usuario haya iniciado sesión, será redirigido a la página de inicio utilizando el método de navegación normal de reacción.

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!