Среда Prod работает, разработчик терпит неудачу


История: Оригинальное название:

Доступ запрещен... пользователь не полностью аутентифицирован; войдите в систему IS_AUTHENTICATED_АНОНИМНО

Полностью функциональный сайт 2.8.8 был перестроен на новой установке 3.1.2. После установки Symfony composer.json был изменен, чтобы включить зависимости с сайта 2.8. Установка прошла успешно. Среда разработки ведет себя так, как описано ниже. В попытке получить дополнительные сведения об этой проблеме, среда prod была просмотренный. Он выявил некоторые недостатки, которые не были выявлены при тестировании 2.8 phpunit. Как только они были очищены, среда 3.1 prod вела себя как среда 2.8 prod. Вывод состоит в том, что существует некоторая разница между средами разработки 2.8 и 3.1, которая вызывает проблему. Конечно, я мог прострелить себе ногу где-нибудь по пути.

Первоначальный вопрос:

В новой версии 3.1 с подключением к сети, /login, / маршруты приводят к циклу с dev записи в журнале:

Изменить: Весь сайт должен быть защищен. Директива access_control { path: ^/, role: ROLE_USER } НЕ является ошибкой. Сайт отлично работает в Symfony 2.8.8.

Редактирование #2: Оказывается, среда prod ведет себя правильно. Дэв этого не делает. config_dev.yml и routing_dev.yml являются YML по умолчанию для 3.1.

request.INFO: Matched route "{route}". {"route":"fos_user_security_login" ...
security.INFO: Populated the TokenStorage with an anonymous Token....
security.DEBUG: Access denied, the user is not fully authenticated; redirecting to authentication entry point
security.DEBUG: Calling Authentication entry point....

Chrome говорит:

Перенаправлял вас слишком много раз

Требуется изменение брандмауэра?

Безопасность.yml (базовый, из документов :, с модификация)

security:
    encoders:
      FOS\UserBundle\Model\UserInterface:
        algorithm: md5
        ignore_case: true
        encode_as_base64: false
        iterations: 1

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_token_generator: security.csrf.token_manager
            logout:       true
            anonymous:    true

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, role: ROLE_USER }
Author: geoB, 2016-07-06

2 answers

Похоже, вы обеспечили свой маршрут login_check - следовательно, когда пользователь отправляет формы входа, запрос перехватывается, и он перенаправляется на другую форму входа.

Попробуйте добавить это правило:

access_control:
    # ...
    - { path: ^/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
 1
Author: romaricdrigon, 2016-07-06 15:40:25

Вместо ответа я публикую это, чтобы сохранить приведенное выше обсуждение, показывающее, что не решает проблему. Пытаясь воспроизвести проблему, я предпринял вторую попытку перенести рабочее приложение 2.8 в 3.1. На этот раз мне это удалось; Я не могу определить, что вызвало описанную выше трудность.

Пожалуйста, считайте, что вопрос снят.

 1
Author: geoB, 2016-07-06 23:19:37