folgenden Setup:Verwenden Sie verschiedene Anmeldeformulare in Symfony 3
Ich habe zwei verschiedene Login-Abschnitte für zwei verschiedene Benutzer.
Der erste Benutzer ist ein normaler Benutzer (Entität: AppBundle: Benutzer) der zweite ist der Administrator (Entität: AppBundle: Admin).
Ich habe zwei verschiedene Login-Pfade, Provider, Firewalls und Encoder. Ich kann mich als Benutzer oder als Administrator ohne Probleme einloggen und abmelden.
Das Problem:
Wenn der Administrator in ich ihn in der Admin-Domäne bleiben muß angemeldet hat und nicht in der Lage sein, die Benutzer-Login zuzugreifen. Dasselbe gilt für den normalen Benutzer. Er darf sich nicht als Administrator anmelden können, wenn er bereits als Benutzer angemeldet ist.
Das Problem ist also, dass, wenn der Admin eingeloggt ist, er immer noch auf die Benutzer-Login-Domain wechseln und sich als Benutzer einloggen kann, dann enthält die Session sowohl USER UND ADMIN.
security.yml:
providers:
admin_db_provider:
name: admin_provider
entity:
class: AppBundle:Admin
...
user_db_provider:
name: user_provider
entity:
class: AppBundle:User
...
firewalls:
admin_secured_domain:
pattern: ^/admin
anonymous: ~
provider: admin_provider
form_login:
login_path: admin.authentication
check_path: admin.authentication
username_parameter: userName
pasword_parameter: password
...
user_secured_domain:
pattern: ^/user
anonymous: ~
provider: user_provider
form_login:
login_path: user.authentication
check_path: user.authentication
username_parameter: userName
pasword_parameter: password
...
access_control:
- { path: ^/user/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
encoders:
...
Ich nehme an, dies geschieht, weil ich zwei verschiedene Anbieter für die Prüfung Login verwenden.
Wenn ich als Benutzer angemeldet bin und auf die Admin-Anmeldung zugreifen, kann ich im Symfony Profiler sehen, dass der Benutzer von "Benutzer" zu "Anon." und dasselbe gilt für den admin, es wechselt von "admin" zu "anon". wenn ich als Admin angemeldet bin und auf die Benutzeranmeldung zugreife.
Ich muss sie nur zurück zu ihrer Domäne umleiten, aber ich bin nicht in der Lage, die Rolle an diesem Punkt zu überprüfen.