0

Ich habe eine Hauptfirewall für meine Symfony 4-Anwendung. Es ist konfiguriert, Benutzer aus der DB zu laden und ein Login-Formular usw. zu verwenden, alles Standard-Zeug. Und es funktioniert gut.Symfony: Basic Auth auf Unterroute zulassen - mehrere Firewalls

Hier ist meine aktuelle security.yaml Datei:

security: 
encoders: 
    App\Entity\User: 
     algorithm: bcrypt 
providers: 
    user_provider: 
     entity: 
      class: App\Entity\User 
firewalls: 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 
    main: 
     pattern: ^/ 
     provider: user_provider 
     anonymous: ~ 
     form_login: 
      login_path: /login 
      check_path: /login 
     logout: 
      path: /logout 
      target: /login 
access_control: 
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/, roles: ROLE_ADMIN } 

Jetzt muss ich in die Standardauthentifizierung auf einer bestimmten Strecke hinzuzufügen, die in es dynamische Informationen hat, die in dem im Kampf ist. Eine Beispiel-URL wäre:

http://myapp.com/repositories/%%username%%/directory/file.json

So bis zu http://myapp.com/ gesichert ist und durch das Standard-Login-Formular authentifiziert.

Aber wenn die Anfrage zu ^/Repositories/%% Benutzername %% Ich brauche grundlegende Auth verwendet werden.

%% username %% ist dynamisch und wie Sie sehen eine Route zu einer Datei, die die Antwort in JSON sein wird. Der Grund Auth hat nicht wirklich für symfony authentifiziert werden, es muss nur verfügbar sein, und wenn es das richtige Exception/Response nicht zurück:

array('fatal: Authentication failed', 'remote error: Invalid username or password.')

Jede Hilfe sehr geschätzt werden würde.

Dank

** EDIT **

Ok Jungs so habe ich es geschafft, herauszufinden, wie die Grund Auth neben Formular basierend Auth für einen Teilroute hinzuzufügen.

Jetzt muss ich nur herausfinden, wie Basic Auth für eine dynamische Route zu aktivieren.

Derzeit deckt die folgende security.yaml http://myapp.com/repositories ab und jeder, der sich erfolgreich anmeldet, hat Zugriff auf alle darunter liegenden Routen.

security: 
encoders: 
    App\Entity\User: 
     algorithm: bcrypt 
providers: 
    user_provider: 
     entity: 
      class: App\Entity\User 
firewalls: 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 
    repos: 
     pattern: ^/repositories/ 
     anonymous: ~ 
     stateless: true 
     http_basic: 
      realm: "Toran Proxy Access" 
    main: 
     pattern: ^/ 
     provider: user_provider 
     anonymous: ~ 
     form_login: 
      login_path: /login 
      check_path: /login 
     logout: 
      path: /logout 
      target: /login 
access_control: 
    - { path: ^/repositories/, roles: ROLE_ADMIN} 
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/, roles: ROLE_ADMIN } 

Aber was muss ich jetzt tun beschränken ist/Repositories/%% username %% mit grundlegenden Auth und nur in dieses Verzeichnis für bestimmte Berechtigungsnachweise, die Zugang.

Dank

Antwort