以下設置:在Symfony 3中使用不同的登錄表單
我對兩個不同的用戶有兩個不同的登錄部分。
第一個用戶是普通用戶(Entity:AppBundle:User),第二個用戶是admin(實體:AppBundle: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:
...
我想這是因爲我使用兩種不同的提供商的登錄檢查。
當我以用戶身份登錄並訪問管理員登錄名時,我可以在Symfony Profiler中看到用戶從「用戶」切換到「匿名」。和admin一樣,它從「admin」切換到「anon」。如果我以管理員身份登錄並訪問用戶登錄名。
我只需要將它們重定向回它們的域,但我現在無法檢查角色。