8768 sujets

Développement web côté serveur, CMS

Salut à tous Smiley smile

J'ai démarré un projet symfony 5 pour créer un site simple d’accès avec sécurité par mdp.

J'ai suivi un tuto sur YouTube pour créer mon projet (qui lui était en symfony 4.4). Je suis bien en symfony 5.XX lorsque je regarde dans le debugger.

Je ne comprend pas pourquoi la commande symfony server:start ne fonctionne pas, je suis obligé d’écrire php bin/console server:run. En fait tout les commande symfony.. ne fonctionne pas je dois écrire php bin/console...

QUESTION 1 : Est ce parce-que lors de la création du projet je l'ai crée avec l'ancienne commande?

Autre question, je souhaiterais bloquer l'ensemble du site si l'utilisateur n'est pas loggé ( tout les user seront en ROLE_USER), et laisser uniquement la route security_login d'accessible.

J'ai réussi en mettant une règle dans le access_control sur chaque route et en ne mettant rien sur la route de security_login.

QUESTION 2 : Ça fonctionne mais je voudrait faire un patern bloquant tout SAUF la page login.

J'ai essayé en mettant une règle '^/' ROLE_USER et une autre '^/security_login IS AUTENTICATED ANONYMOUSLY, mais ça me bloque tout même l’accès à la page login.

Avez vous une idée de mes erreurs?

Merci à tous
Salut,

alors depuis la V5 de Symfony, ils sont revenu à un installer sous windows (sous linux et MacOs aussi )
Installer symfony

du coup la commande pour le server est:
symfony serve



Pour l'acces control tu peux essayer:


access_control:
        - { path: ^/security_login, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, role: ROLE_USER }
Hello, merci pour l'install de symfony ça fonctionne parfaitement.
Pour mon access_control, ça me fait le même résultat.
Voici mon code de security_yaml:

security:
    encoders:
        App\Entity\User:
            algorithm: bcrypt
 
    #  https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
 
    providers:
        users_in_memory: { memory: null }
        in_database:
            entity:
                class: App\Entity\User
                property: email
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            anonymous: true
            lazy: true
            provider: in_database
 
            form_login:
                login_path: security_login
                check_path: security_login
 
            logout:
                path: security_logout
                target: home
 
            # activate different ways to authenticate
            #  https://symfony.com/doc/current/security.html#firewalls-authentication
 
 
            #  https://symfony.com/doc/current/security/impersonating_user.html
 
            # switch_user: true
 
    # Easy way to control access for large sections of your site
    # Note: Only the *first* access control that matches will be used
    access_control:
        # - { path: ^/admin, roles: ROLE_ADMIN }
        # - { path: ^/profile, roles: ROLE_USER }
 
        - { path: '^/security_login', roles: [IS_AUTHENTICATED_ANONYMOUSLY] }
        - { path: '^/', roles: ROLE_USER }


- { path: '^/security_login', roles: [IS_AUTHENTICATED_ANONYMOUSLY] }

ou

- { path: '^/security_login', roles: IS_AUTHENTICATED_ANONYMOUSLY }

Même résultat ^^

Firefox:

La page n’est pas redirigée correctement

Firefox a détecté que le serveur redirige la demande pour cette adresse d’une manière qui n’aboutira pas.

La cause de ce problème peut être la désactivation ou le refus des cookies.

Mon terminal dans php storm:
[Application] Nov 9 07:52:59 |DEBUG | SECURI Access denied, the user is not fully authenticated; redirecting to authentication entry point.
[Application] Nov 9 07:52:59 |DEBUG | SECURI Calling Authentication entry point.
Need help ^^
Salut,


Voici un exemple de route, dans ton "path" il faut indiquer le nom qui s'affiche dans l'URL pas le name.


 * @Route("/login", name="app_login")

cela donne :
 - { path: '^/login', roles: IS_AUTHENTICATED_ANONYMOUSLY }
Omg merci ! Ca fonctionne écrit comme ça..
Je pensais que c'etait le name de la route ^^. Tout est ok maintenant Smiley smile

Voici le code Smiley confused

        - { path: ^/connexion, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, role: ROLE_USER }