Symfony 3 - Невозможно реализовать вход в систему FOSUser для безопасности, потому что я тоже использую аутентификацию CAS - PullRequest
0 голосов
/ 18 апреля 2019

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

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

# app/config/security.yml
security:
    encoders:
        FOS\UserBundle\Model\UserInterface: 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: Site\PagesBundle\Security\LoginFormAuthenticator


        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: Site\PagesBundle\Security\LoginFormAuthenticator

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

1 Ответ

0 голосов
/ 22 апреля 2019

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

...........

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

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

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

...