Symfony 3 - CAS аутентификация навязывается мне, как только я хочу подписаться на сайт - PullRequest
0 голосов
/ 15 апреля 2019

работаю под symfony 3 с двумя режимами подключенияОдин из них находится в памяти (база данных), а другой - посредством аутентификации CAS.

Поэтому, когда вы заходите на домашнюю страницу сайта, вы должны иметь возможность выбрать, подключаться ли к базе данных (с помощьюформа уже присутствует на домашней странице) или с аутентификацией CAS (и в этом случае мы перенаправлены на страницу аутентификации).

Проблема в том, что если я не подключен, то если я пытаюсь получить доступдомашняя страница (или другая страница сайта), я автоматически перенаправлен на страницу аутентификации 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

        main:
            logout_on_user_change: true
            pattern: ^/

            guard:
                authenticators:
                    - app.security.login_form_authenticator
                    - 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: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        #   - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        #  - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/.*, role: ROLE_SUPER_ADMIN }
        - { path: ^/profile/.*, role: ROLE_USER }
        - { path: ^/logout, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/.*, role: IS_AUTHENTICATED_FULLY }

config.yml:

# FOS User Bundle
fos_user:
    db_driver: orm
    firewall_name: main
    user_class: Site\PagesBundle\Entity\User
    service:
        mailer: fos_user.mailer.twig_swift
    registration:
        form:
            type: FOS\UserBundle\Form\Type\RegistrationFormType
            name: fos_user_registration_form
            validation_groups: [Registration, Default]
        confirmation:
            enabled: true
            template: '@FOSUser/Registration/email.txt.twig'
    profile:
        form:
            type: FOS\UserBundle\Form\Type\ProfileFormType
            #validation_groups: [Profile, Default]
    resetting:
        email:
            template: '@FOSUser/Resetting/email.txt.twig'
    group:
        group_class: FosSf3\MainBundle\Entity\Group
    from_email:
        address: *********
        sender_name: ******


besancon_auth:
    use_default_provider : true
    user_entity: ~
    homepage: "homepage"
    authentication_service: Site\PagesBundle\Security\Auth\AuthCasService
    type_auth: Cas
    cas:
        #Serveur Cas
        hostname: ***********
        #Port Cas
        port: ****
        #Uri Cas
        uri: ""

Это будет связано со строкой в ​​конфигурации.php: homepage: "homepage" ??Спасибо за вашу помощь

1 Ответ

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

Если мы прочитаем ваш access_control, мы увидим, что вы не можете пойти дальше, чем "/", не пройдя полную аутентификацию.

Таким образом, вы должны авторизовать свой путь к домашней странице до контроля доступа к "/" Вот как то так:

access_control:

    #    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    #   - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    #  - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/.*, role: ROLE_SUPER_ADMIN }
    - { path: ^/profile/.*, role: ROLE_USER }
    - { path: ^/logout, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/*, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/.*, role: IS_AUTHENTICATED_FULLY }

Хотя я не уверен, какой путь к вашей домашней странице, если это / homepage или просто / , так что просто отрегулируйте ваш access_control в зависимости от того, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...