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