Manuel_GT Posted February 7, 2023 Share Posted February 7, 2023 Hola. Escribo aquí buscando ayuda porque llevo con esto demasiadas horas y sinceramente ya no veo que puede estar incorrecto. Explico mi problema. El objetivo es dar acceso a una página de mi módulo en el backEnd sin pasar por el login. Básicamente el usuario (empleado) recibe un email con un link donde debe confirmar unos datos. La idea es que el link le muestre el mismo sin tener que pasar por el login. Para ello, el link lleva asociado un "token" o "apiKey" (hash) que identifica y está asociado en bbdd a ese usuario y formulario. .../index.php/modules/warehouses/agreement?hash=1614a0aeb88a9afb2bbe687860b8b8c9cc4b7967 Para lograr este objetivo, he creado un nuevo "firewall" en symfony siguiendo paso por paso sus instrucciones https://symfony.com/doc/3.4/security/api_key_authentication.html Todo está listo pero cuando llamo a mi url acabo en el login 😭. He puesto trazas en mi clase "Authenticator" (que implementa SimplePreAuthenticatorInterface ) para comprobar un poco y lo que veo es que en ningún caso hace el paso 1 de su documentación, llamar a la función "createToken()" que es la que recibe mi apiKey por request, con lo que directamente el paso 2 que es la función supportsToken() (que si se ejecuta) recibe un token null y da false y el firewall pasa al siguiente "Authenticator" que es el propio de Prestashop -> al login. Lo que no comprendo es por qué si llama a supportsToken correctamente no llama a createToken que está en la misma clase. ¿Alguien sabe si hay algún bug de Symfony en esto? o ¿ha probado a hacer este desarrollo y le ha funcionado? ¿Sabéis como podría activar el Log de Symfony para poder ver una salida de log más completa? Veo que en su código fuente hay lineas de log pero no las tengo en mi dev.log" ¿Sabéis de alguna herramienta para poder hacer debug paso a paso y ver que está haciendo realmente esto? Lo peor de todo esto es esa sensación de impotencia permanente al ver que no funciona, pero no hay errores visibles ni en la aplicación ni en los logs. Y me pasa mucho con este software. Es frustrante. Toda ayuda es bien recibida. NOTA: Mi Prestashop es 1.7.8.8 Muchas gracias Link to comment Share on other sites More sharing options...
Manuel_GT Posted February 7, 2023 Author Share Posted February 7, 2023 Bueno, pues al final era simplemente que mi definición de "firewall" (hash-based) tenía que estar la primera en el fichero de configuración de seguridad "security.yml" # To get started with security, check out the documentation: # http://symfony.com/doc/current/book/security.html security: # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers providers: in_memory: memory: ~ admin: id: prestashop.security.admin.provider api_key_user_provider: id: aqwarehouses.security.apikey-user-provider firewalls: hash-based: pattern: warehouses/agreement stateless: false simple_preauth: authenticator: aqwarehouses.security.hash-authenticator provider: api_key_user_provider # disables authentication for assets and the profiler, adapt it according to your needs dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: anonymous: ~ logout_on_user_change: true Este tipo de cosas me desesperan..... Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now