¿Es posible?

¡Hola, miembros!
Espero que todos estén bien.
Construí un foro de Discourse e intenté conectarlo con mi sitio web (ASP.NET).
Primero, usé Discourse-Connect y tuve éxito, sin embargo, con él los usuarios no pueden iniciar sesión ni registrarse en el foro.
Así que intenté usar Discourse-Api para iniciar sesión en el foro, pero no se completó.
Leí muchas documentaciones pero no encontré la solución correcta.
Por favor, ¿alguien puede ayudarme a resolver este problema o decirme la posibilidad, la solución correcta?
Amablemente

Tienes dos posibilidades:

  • Configura DiscourseConnect para que los usuarios se registren e inicien sesión en tu sitio web, y cuando intenten iniciar sesión en tu foro, será automáticamente. Esta es la configuración habitual. Si configuras las cosas de esta manera, todo el registro e inicio de sesión se realizará en tu sitio web. El inicio de sesión y registro de nombre de usuario/contraseña en tu foro se deshabilitarán.

  • Configura DiscourseConnect para que los usuarios se registren e inicien sesión en tu foro, y cuando intenten iniciar sesión en tu(s) sitio(s) web, será automáticamente. Esto se llama configurar Discourse como Proveedor de DiscourseConnect y cómo hacerlo se puede encontrar aquí.

3 Me gusta

Gracias por tu rápida respuesta. ¿Hay alguna posibilidad sin DiscourseConnect?

¿Por qué no quieres usarlo?

Por supuesto, puedes implementar algo tú mismo, pero desecharás años de experiencia que se han invertido en la creación de DiscourseConnect. Así que, antes de decidirte a emprender esa enorme tarea, debes decidir qué buenas razones tienes para crear algo tú mismo en lugar de usar lo que ya está disponible.

5 Me gusta

Por supuesto, sé que DiscourseConnect es una excelente función.
Pero mi propósito es el inicio de sesión y registro local en Discourse Forum.
Así que intenté usar la API de Discourse.
¿No hay posibilidades con la API de Discourse?
Gracias.
Atentamente

Ok, si quieres iniciar sesión y registrarte localmente en Discourse, por favor, dime qué tipo de integración con tu sitio web estás buscando.

2 Me gusta

Mi propósito es que esto funcione así:

  1. Si el usuario ha iniciado sesión en mi sitio, cuando va al foro, el usuario inicia sesión automáticamente en el foro.
  2. Y el usuario puede iniciar sesión y registrarse en el foro.
  3. Si el usuario ha iniciado sesión en el foro, cuando va a mi sitio, el usuario inicia sesión automáticamente en mi sitio.
    Con DiscourseConnect, puedo realizar 1) y 3), pero no puedo realizar 2).
    pero 2) es muy importante para nosotros.

Si permite que los usuarios se registren en dos lugares, las cosas se convertirán rápidamente en un desastre, y es por eso que tiene que tomar una decisión: o los usuarios se registran en su sitio web o los usuarios se registran en su foro, pero no en ambos.

¿Por qué es esto tan importante para usted?

3 Me gusta

Gracias por tu ayuda.
Sin embargo, mi jefe lo quiere.
Por favor, revisa mi desempeño.
Intenté realizar con la API de Discourse de esta manera:

  1. llamar a GET ‘/session/csrf’ y obtener el token csrf y la cookie
  2. llamar a POST ‘/session’ con Encabezado: ‘X-CSRF-Token’=‘token csrf’, ‘Cookie’ = ‘cookie obtenida’, Datos: inicio de sesión, contraseña, zona horaria, método de segundo factor, token de autenticidad
  3. llamar a POST ‘/login’ con Encabezado: ‘Cookie’=‘cookie obtenida de /session’
    Datos: nombre de usuario, contraseña, redirección

Todos los registros son iguales al flujo de inicio de sesión de Discourse.
Pero cuando me redirijo al foro de Discourse, el usuario no inició sesión.

¿Cómo puedo resolver este problema? ¿Qué está mal?

Gracias de nuevo por tu ayuda.

PD. Mi servidor es un servidor Ubuntu Nginx.

Entonces necesitas explicarle a tu jefe que registrar a los usuarios en más de un lugar es una muy mala idea. Las cosas se convertirán en un gran desastre. Explícale qué sucede cuando te registras en el sitio web con el nombre de usuarioA y en el foro con el nombre de usuarioB, ¡con la misma dirección de correo electrónico! O qué sucedería si el usuario cambia su contraseña solo en el sitio web, o solo en Discourse. ¡Entonces las cosas se romperán!

Lo que has hecho inicia sesión de tu SERVIDOR en el foro como el usuario. No establecerá las cookies de sesión para el usuario, por lo que no iniciará sesión al usuario en el foro.

Además, aparentemente tienes la contraseña en texto plano del usuario a tu disposición. Esto es una MUY MALA idea. Siempre debes almacenar un hash (cifrado unidireccional) de una contraseña, y nunca la contraseña en texto plano. Cuando tu base de datos sea hackeada, todas las contraseñas de tus usuarios serán conocidas por el atacante. Otra buena cosa para explicarle a tu jefe.

Te he dado tres buenas razones que puedes usar para convencer a tu jefe de que haga las cosas de manera diferente. Esto solo conducirá a enormes problemas. No puedo ayudarte a que esto funcione, porque no funcionará. Incluso si logras que funcione, solo funcionará a corto plazo.

6 Me gusta

Entendido.
Le explicaré esto a mi jefe.
Muchas gracias.
Quiero hablar más contigo (por supuesto, no sobre esto).
Saludos

Por favor, ayúdame una vez más.
Mi servidor de foro tiene un dominio principal y varios subdominios.
¿Puedo crear varios foros de Discourse en cada dominio usando una base de datos?
¿Y puedo construir así?:

  • En el dominio principal, es posible iniciar sesión y registrarse localmente.
  • En los subdominios, con DiscourseConnect, conéctate a mis sitios.
    Si es posible, por favor, guíame para construirlo.
    Si es imposible, por favor, dime la razón.
    Gracias.

Sí, es posible.

  • Busca “multisite” en este foro.
  • Configura el sitio principal como proveedor de DiscourseConnect
  • Configura los sitios de subdominio como cliente de DiscourseConnect
3 Me gusta