Urls non sécurisés

a marqué ce sujet comme résolu.

Salut à tous,

J'ai suivi ce tutoriel de BestCoder sur créez une api rest avec symfony-3 et FOSRestBundle jusqu'à la fin, maintenant je souhaite faire en sorte que pour certaines Urls, on ne soit pas obligé de donner un token (comme la doc par exemple).

J'ai tenté le principe des access_control dans le fichier security.yml mais rien n'y fait. La seule solution qui marche pour l'instant c'est de vérifier dans la méthode createToken du controlleur AuthTokenAuthenticator mais je trouve cela fastidieux et pas propre du tout.

1
2
3
4
5
6
7
8
<?php
$targetUrls = ['/auth-tokens', '/api/doc', '/about'];
// Si la requête est une création de token, aucune vérification n'est effectuée
foreach($targetUrls as $targetUrl){
    if ($this->httpUtils->checkRequestPath($request, $targetUrl)) {
        return;
    }
}

Aurait il un moyen de faire plus propre et plus simple?

Merci d'avance pour votre aide

+0 -0

Salut,

J'ai encore quelques chapitres en validation et ils traitent bien ce cas de figure. Pour ne pas utiliser l'authentification, tu peux modifier directement le fichier security.yml. Dans le parefeu, il suffit de rajouter une règle du type :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# app/config/secrity.yml
security:

# ...
    firewalls:
        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        doc:
            pattern: ^/documentation
            security: false

Avec la clé security à false, Symfony n'appelle pas notre mécanisme d'authentification pour l'url /documentation.

Ok. Merci beaucoup. Du coup ça fonctionne, et il faut justement le placer avant notre pare-feu main. Donc je suppose que pour les autres urls que l'on veut laisser accessible, il faut s'y prendre de la même manière, par exemple avec les lieux ça donnerait un truc du genre

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# app/config/security.yml
security:

# ...
    firewalls:
        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        places:
            pattern: ^/places
            security: false
+0 -0

Oui, c'est un mécanisme natif de Symfony. Par contre fait attention, si tu mes /places, Symfony va autoriser toutes les requêtes sur les lieux (/places, /places/1, etc.). N'importe qui pourra donc supprimer les lieux :° .

BestCoder

Ooops. J'avais oublié cet aspect :( Merci pour toute cette attention.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte