Symfony 2.7 маршрутизация и префикс _locale

Для установки модуля FOSuserBundle я использовал учебник Winzou ("перевести свой сайт") и, как и ожидалось, столкнулся с проблемой маршрутов и префикса. /{_locale}/ чтобы он запустился, я скопировал файл security.xml из FOSUserBundle в свой userBundle, у меня есть префиксные маршруты с /{_locale}/и я импортировал этот файл в свой app/config/routing.yml,

Когда я иду в app.php/en/login в Firefox говорится, что Firefox обнаружил, что сервер перенаправляет запрос на этот адрес способом, который никогда не будет завершен. Результат в Chrome: "Эта веб-страница имеет цикл перенаправления" с кодом ошибки ERR_TOO_MANY_REDIRECTS.

Когда я отключаю префикс и подключаюсь без /fr, затем я повторно активировал префикс, сайт хорошо работает с префиксами, и когда я отключаюсь от меня и / или я хочу восстановить соединение, он не работает...

Для информации команда router: debug дает fos_user_security_login GET | POST ANY ANY / local {_} / login

Два дня я пробовал все решения, которые я нашел на форумах, но ни одно из них не работает. В то же время все эти посты начинают встречаться... Заранее спасибо за помощь, потому что я застрял здесь С уважением

Если я добавлю префикс /{_locale}/ к маршрутам моего пакета (routing.yml), чтобы разрешить перевод моих страниц (/ fr / mypage или / en / mypage), маршруты / fr / login (или en / login) /) и / fr / logout (или / en / logout) недоступны... мою конфигурацию вы можете увидеть в 3 прикрепленных файлах (/app/config/routing.yml, /app/config/security.yml и userBundle). /Resources/config/routing/security.xml


# /app/config/routing.yml

#OS_user:
#    resource: "@OSUserBundle/Resources/config/routing.yml"
#    prefix:   /

OS_site:
    resource: "@OSSiteBundle/Resources/config/routing.yml"
#    prefix:   /
    prefix:   /{_locale}/

app:
    resource: "@AppBundle/Controller/"
    type:     annotation

# app/config/security.yml
fos_js_routing:
    resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml"
_liip_imagine:
    resource: "@LiipImagineBundle/Resources/config/routing.xml"


#login:
#    pattern:   /login
#    defaults:  { _controller: OSUserBundle:Security:login }

#login_check:
#    pattern:   /login_check

#logout:
#    pattern:   /logout
fos_user_security:
    resource: "@OSUserBundle/Resources/config/routing/security.xml"


# app\config\security.yml

# To get started with security, check out the documentation:
# http://symfony.com/doc/current/book/security.html
security:

    # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
    encoders:
        #Symfony\Component\Security\Core\User\User: plaintext
        #Symfony\Component\Security\Core\User\User: plaintext
        OS\UserBundle\Entity\User: sha512
    role_hierarchy:
        ROLE_DESIGNER:    ROLE_COMPANY ROLE_COMPANY_USER ROLE_WELLBEING ROLE_CULTURAL ROLE_INDIVIDUAL
        ROLE_USER:        ROLE_DESIGNER
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        #in_memory:
        #    memory:
        #        users:
        #            user:  { password: userpass, roles: [ 'ROLE_USER' ] }
        #            admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
        main:
            #entity:
            #    class:    OS\UserBundle\Entity\User
            #    property: username
            id: fos_user.user_provider.username

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

        # On crée un pare-feu uniquement pour le formulaire
        main_login:
            # Cette expression régulière permet de prendre /login (mais pas /login_check !)
            pattern:   ^/login$
            anonymous: true # On autorise alors les anonymes sur ce pare-feu
        main:
            pattern:   ^/
            anonymous: false
            provider: main
            form_login:
                login_path: fos_user_security_login
                check_path: fos_user_security_check
           logout:
                path:       fos_user_security_logout
                target:     /
            remember_me:
                key:        %secret%
    access_control:
        #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
        #- { path: ^/admin, roles: ROLE_ADMIN }
        #- { path: ^/admin, ip: 127.0.0.1, requires_channel: https }

userBundle / Ресурсы / конфигурация / маршрутизация / security.xml

<?xml version="1.0" encoding="UTF-8" ?>

<routes xmlns="http://symfony.com/schema/routing"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">

    <route id="fos_user_security_login" path="/{_locale}/login" methods="GET POST">
        <default key="_controller">FOSUserBundle:Security:login</default>
    </route>

    <route id="fos_user_security_check" path="/login_check" methods="POST">
        <default key="_controller">FOSUserBundle:Security:check</default>
    </route>

    <route id="fos_user_security_logout" path="/{_locale}/logout" methods="GET">
        <default key="_controller">FOSUserBundle:Security:logout</default>
    </route>

</routes>

0 ответов

Другие вопросы по тегам