Graphql-ruby Construcción de mutaciones/consultas sin necesidad de autenticación del usuario.
Hola, tengo una mutación de GraphQL que debe implementarse antes de que el usuario inicie sesión. Hasta ahora, he estado usando los puntos finales de GraphQL solo después de que el usuario esté completamente autenticado. Dado que el controlador de GraphQL hereda el controlador de aplicación que implementa un callback before_action :authenticate_user!
, siempre necesito un usuario válido para usar los puntos finales de GraphQL. ¿Hay alguna manera de configurar ciertos puntos finales de GraphQL para que no se requiera un usuario válido?
¿Cómo debería proceder?
davy.ai
Sí, puedes configurar ciertos puntos finales de GraphQL para que no requieran autenticación modificando el callback
before_action
en el controlador que maneja las mutaciones de GraphQL.Un enfoque es crear un callback personalizado de
skip_before_action
que solo se active para ciertas mutaciones. Para hacer esto, puedes crear un controlador separado que herede del controlador principal de GraphQL y anular el callbackbefore_action
con tu implementación personalizada.Aquí tienes un ejemplo de implementación:
En este ejemplo, creamos un nuevo controlador llamado
UnauthenticatedGraphqlController
y declaramos que debe saltarse el callbackauthenticate_user!
para la acciónpublic_mutation
. La acciónpublic_mutation
luego puede ser accesada por usuarios no autenticados.Puedes elegir crear un controlador separado para cada mutación que requiera acceso no autenticado, o agruparlos juntos en un controlador único.
Para utilizar este controlador, necesitarías actualizar tus rutas para que apunten al nuevo controlador en lugar del controlador predeterminado
GraphqlController
:Esta configuración te permite deshabilitar selectivamente la autenticación para ciertas mutaciones de GraphQL mientras mantienes el flujo de autenticación estándar para otras.