Tengo un componente temático donde se envía una solicitud a una API externa para obtener datos durante la carga de una página. Sin embargo, el token Bearer que utilizo para obtener estos datos se carga de forma natural en el script al que el cliente tiene acceso. ¿Hay alguna forma de crear un plugin o algo que me permita ocultar esta información?
Sí, de hecho deberías crear un plugin y definir un método de controlador que obtenga los datos por ti.
Luego, desde el código del frontend, llama al método del controlador, que inyecta el token de portador en el lado del servidor, inaccesible para cualquier tercero, y realiza la llamada a la API externa.
[quote=“Richard - Communiteq, post:2, topic:238166, username:RGJ”]deberías crear un plugin y definir un método de controlador que obtenga los datos por ti.
[/quote]
En lugar de crear un controlador nuevo para hacerlo (que no es claramente lo que Richard recomendó), puedes añadirlo fácilmente a un serializador existente, algo como
add_to_serializer(:current_user, :my_stuff) do
stuff = get_my_stuff_somehow
stuff
end
Descubrir qué serializadores están disponibles y cuál quieres es, con suerte, bastante simple (la mayoría son fáciles de adivinar, pero puedes encontrarlos en app/serializers); buscar en GitHub - discourse/all-the-plugins add_to_serializer debería proporcionar muchos ejemplos. Y empieza con GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins.
Incluso si no sabes Ruby o Rails, lo anterior debería darte una buena idea de lo que necesitas hacer. Si no, puedes preguntar en Marketplace con un presupuesto.
Creo que es una muy mala idea vincular una dependencia externa a un serializador @pfaffman
Si el servicio externo falla o es lento, entonces tu foro también fallará.
Vaya. Bueno, vaya. Eso suena cierto. :persona_encogiéndose_de_hombros:
@attj, este es uno de muchos asuntos en los que confío más en lo que dice Richard que en lo que digo yo.
Me temo que tendrás que hacer el trabajo para añadir una ruta y demás, lo cual son bastantes más líneas de código (probablemente solo docenas). Creo que Discourse Category Home 🏠 es uno que añade una ruta.
Supongo que logré escribir un plugin, pero necesito ponerlo en GitHub para incluirlo en mi app.yml. Lo que, naturalmente, también expone el token. ¿Hay alguna forma de evitar esto?
Simplemente lea el token de una configuración del sitio e introdúzcalo allí después de la instalación.
Tiene mucho sentido. ¡Gracias!
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.