Witam, piszę aplikację w której będą dwa oddzielne systemy logowania, panel dla użytkowników i panel administracyjny. Do panelu administracyjnego zalogować się będą mogli tylko administratorzy. Wykorzystuję do tego FOSUserBundle. Logowanie do panelu użytkownika zrobiłem na domyślnych kontrolerach i widokach. Z jednym panelem wszystko działa bez problemu ale przy dwóch jest problem z wysłaniem danych logowania. Zrobiłem w bazie dwie jednakowe tabele fos_user i fos_admin. Według dokumentacji do config.yml dodałem:
fos_user:
db_driver: orm
firewall_name: panel
user_class: AppBundle\Entity\User
service:
mailer: fos_user.mailer.twig_swift
resetting:
email:
template: email/password_resetting.email.twig
registration:
confirmation:
enabled: true
template: FOSUserBundle:Registration:email.txt.twig
firewall_name: admin
user_class: AppBundle\Entity\Admin
A w security.yml:
providers:
admin:
entity:
class: AppBundle:Admin
property: username
user:
entity:
class: AppBundle:User
property: username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
panel:
pattern: ^/panel
form_login:
provider: user
login_path: /panel/logowanie
check_path: /panel/login_check
failure_path: /panel/logowanie
csrf_token_generator: security.csrf.token_manager
always_use_default_target_path: true
default_target_path: /panel/pulpit
logout:
path: /panel/wyloguj
target: /panel/logowanie
anonymous: true
admin:
pattern: ^/admin
form_login:
provider: admin
login_path: /admin/logowanie
check_path: /admin/login_check
failure_path: /admin/logowanie
csrf_token_generator: security.csrf.token_manager
always_use_default_target_path: true
default_target_path: /admin/pulpit
logout:
path: /admin/wyloguj
target: /admin/logowanie
anonymous: true
access_control:
- { path: ^/panel/logowanie$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/panel/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/panel/rejestracja, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/panel/*, role: ROLE_USER }
- { path: ^/admin/logowanie$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/*, role: ROLE_ADMIN }
A w routing.yml wpisy odpowiedzialne za logowanie:
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
fos_user_security_login:
path: /panel/logowanie
defaults: { _controller: FOSUserBundle:Security:login, _method: POST }
fos_user_security_check:
path: /panel/login_check
defaults: { _controller: FOSUserBundle:Security:check }
fos_admin_security_login:
path: /admin/logowanie
defaults: { _controller: AppBundle:Security:login, _method: POST }
fos_admin_security_check:
path: /admin/login_check
defaults: { _controller: AppBundle:Security:check }
Do logowania do panelu administracyjnego nadpisałem domyślne kontrolery i widoki i tu jest problem bo po wysłaniu formularza logowania przekierowuje mnie na stronę logowania do panelu użytkownika i dostaję że dane są nie poprawne. Wygląda to tak jakby sprawdzało dane logowania do panelu admina w tabeli fos_user a powinno w tabeli fos_admin.
Nie wiem czy dobrze to wszystko robię ale takie coś poskładałem z tego co znalazłem w sieci i widzę że nie działa to.
Ten post edytował mariio81 18.11.2016, 19:53:04