Symfony 3 — Не удается реализовать вход FOSUser в систему безопасности, потому что я тоже использую аутентификацию CAS

#php #symfony #fosuserbundle

#php #symfony #fosuserbundle

Вопрос:

Я хотел бы добавить свой метод входа FOSUser в свой security.yml, потому что я использую центр аутентификации, но я хочу аутентификацию с помощью формы входа на моей домашней странице (с таблицей пользователей в базе данных, которая отличается от аутентификации User от CAS)

Итак, я настроил свой security.yml следующим образом :

 # app/config/security.yml
security:
    encoders:
        FOSUserBundleModelUserInterface: bcrypt

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

providers:
    app:
       id: bes_auth.user_provider

firewalls:

    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
       # anonymous:    true

    public:
        pattern: ^accueil
        security: false
        anonymous: true

    main:
        logout_on_user_change: true
        pattern: ^/(admin|profile|packages|securiteInformatique|logout)
       # pattern: ^/(?!accueil)


        guard:
            authenticators:
                - app.security.login_form_authenticator:
                    check_path: fos_user_check_path

                - bes_auth.authenticator

        entry_point: SitePagesBundleSecurityLoginFormAuthenticator


        logout:
            path:   deconnexion #nom de la route de déconnexion
            target: /
            success_handler: bes_auth.authenticator
        anonymous:    true

access_control:
    - { path: ^/admin, role: ROLE_SUPER_ADMIN }
    - { path: ^/accueil, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, role: ROLE_USER }
 

Но сейчас у меня эта ошибка :

Недопустимый тип для пути «security.firewalls.main.guard.authenticators.0». Ожидаемый скаляр, но получил массив.

Речь идет о :

         guard:
            authenticators:
                - app.security.login_form_authenticator:
                    check_path: fos_user_check_path

                - bes_auth.authenticator

            entry_point: SitePagesBundleSecurityLoginFormAuthenticator
 

Но я не понимаю, что не так, может кто-нибудь мне помочь, пожалуйста?

Комментарии:

1. так что это написано в нужном скаляре ошибок. symfony.com/doc/current/security /…

Ответ №1:

просто измените свой первый защитный аутентификатор без опции check_path: fos_user_check_path следующим образом :

 ...........

guard:
    authenticators:
        - app.security.login_form_authenticator
        - bes_auth.authenticator 

если вы хотите больше объяснить, это документ: здесь

спасибо, я надеюсь, что это поможет вам