Symfony мульти доменный вход - PullRequest
       7

Symfony мульти доменный вход

1 голос
/ 12 октября 2019

Итак, у меня есть сайт Symfony 4, использующий мультидомен. Это не разные веб-сайты, это один веб-сайт с разными языками, поэтому у меня есть example.com, en.example.com, ... Если мы заходим на example.com, это работает, но не позволяет пользователю войти в систему. на en.example.com. Я попытался установить конфигурацию, как я видел в framework.yml:

framework:
    session:
        handler_id: ~
        cookie_domain: '.localhost'
        name: SFSESSION

Но он просто ломает логин (ошибки нет, но он «запускает» неудачный логин и не устанавливается cookie). Если я установлю en.localhost в качестве домена, он будет работать для этого субдомена, но, очевидно, не для других.

Я создал тестовую страницу с таким кодом:

<?php

$currentCookieParams = session_get_cookie_params();

$rootDomain = '.localhost';

session_set_cookie_params(
    $currentCookieParams["lifetime"],
    $currentCookieParams["path"],
    $rootDomain,
    $currentCookieParams["secure"],
    $currentCookieParams["httponly"]
);
session_start();

Результатчто когда я получаю доступ к localhost, у меня есть php cookie (в моем приложении symfony подобная конфигурация не приводит к cookie), но если я иду в test.localhost, у меня ничего нет.

Я пытался установитьapache pack (https://symfony.com/doc/current/setup/web_server_configuration.html) И установить

php_value session.cookie_domain ".localhost"

В .htaccess, и он не работает, я вхожу в поддомен и нигде больше; это похоже на то, что htaccess игнорируется.

Что мне не хватает? Спасибо

1 Ответ

0 голосов
/ 04 ноября 2019

В конце концов, я использовал конфигурацию apache для ее достижения (на производстве, а не на моем wamp).

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAlias *

    DocumentRoot /var/www/html/examplewebsite/public
    DirectoryIndex /index.php

    <Directory /var/www/html/examplewebsite/public>
        AllowOverride None
        Order Allow,Deny
        Allow from All
        php_value session.cookie_domain example.com
        FallbackResource /index.php
    </Directory>

    # uncomment the following lines if you install assets as symlinks
    # or run into problems when compiling LESS/Sass/CoffeeScript assets
    # <Directory /var/www/project>
    #     Options FollowSymlinks
    # </Directory>

    # optionally disable the fallback resource for the asset directories
    # which will allow Apache to return a 404 error when files are
    # not found instead of passing the request to Symfony
    <Directory /var/www/project/public/bundles>
        FallbackResource disabled
    </Directory>
    ErrorLog /var/log/apache2/project_error.log
    CustomLog /var/log/apache2/project_access.log combined

    # optionally set the value of the environment variables used in the application
    #SetEnv APP_ENV prod
    #SetEnv APP_SECRET <app-secret-id>
    #SetEnv DATABASE_URL "mysql://db_user:db_pass@host:3306/db_name"
</VirtualHost>

Строка, которая имеет значение:

php_value session.cookie_domain example.com

Видимо: Если вы не задаете cookie_domain: по умолчанию cookie является специфическим для субдомена (или без субдомена), который находится в URL. Если вы установили: .example.com: каждый субдомен совместно использует cookie, но не домен без субдомена (example.com). Если вы задаете example.com: простой домен, и все субдомены совместно используют cookie.

Я не уверен на 100%, что это не работает на моем wamp, пока не пробовал.

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