Blog de Gonzalo

PROTEGER EL ADMIN CON CONTRASEÑA EN SYMFONY

Hace poco escribí un tutorial sobre easyadmin de symfony y ahora os quiero escribir sobre como proteger el admin con contraseña en symfony sin tener que hacer un sistema complicado de autenticación. En el ejemplo que voy a poner es una autenticación http básica.
Para realizar esta protección, voy a poner un ejemplo sencillo, aunque hay otras maneras:
Abrimos el fichero security.yaml que se encuentra en la carpeta config.


security:
    encoders:
        Symfony\Component\Security\Core\User\User: bcrypt

    providers:
        chain_provider:
            chain:
                providers: [in_memory]
        in_memory:
            memory:
                users:
                    administrador:
                        password: 
                        roles: 'ROLE_ADMIN'
    firewalls:
        secured_area:
            pattern: ^/admin
            http_basic:
                realm: 'Mi web admin'
                provider: in_memory
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

    access_control:
         - { path: ^/admin, roles: ROLE_ADMIN }


En el código podemos ver, no está explicado en orden sino por importancia, paso a paso para entenderlo:
  • access_control: La web de la página que queremos proteger. Este caso es admin y el rol es ROLE_ADMIN, se pueden gestionar varias páginas y roles.
  • providers: En esta sección se le indica a symfony donde "buscar" a los usuarios. En este caso está puesto que sea por memoria, es decir, que los usuarios los buscarán en este fichero y se le indica poniendo in_memory, donde sindica los usuarios, en este caso el usuario es "administrador", su clave y su rol.
  • encoders: Se indica la codificacón de las contraseñas, puede ser plain_text, auto, bcrypt, como en el ejemplo y otras.
  • generar password: Para generar una clave desde symfony basta con ejecutar el comando php bin/console security:encode-password tu-password y devolverá la clave codificada con lo la encriptación definida en encoders encoder:. Copiamos la clave generada y la copiamos en la sección password del usuario generado, en el ejemplo donde pone .

Este es un ejemplo bastante sencillo. Y se pueden usar usuarios creados en base de datos y otras opciones.
Esta protección se puede hacer desde apache: Como proteger directorios y archivos con apache

Compartir en twitter