gpt4 book ai didi

symfony 动态设置 cookie_domain

转载 作者:行者123 更新时间:2023-12-04 04:59:21 25 4
gpt4 key购买 nike

我有一个可以为多个域提供服务的应用程序。
我的 framework.session.cookie_domain 有问题

  • 我希望 session 保持在子域之间,到目前为止,cookie_domain 设置正确
  • 我遇到的问题是我希望动态设置 cookie_domain 参数,因为我事先不知道请求来自哪个域。
  • 我试过在AppKernel.php做类似的事情:
  • $domain = substr($_SERVER['HTTP_HOST'], strpos($_SERVER['HTTP_HOST'], '.')); ini_set('session.cookie_domain', $domain);
  • 但它似乎打破了我的 session
  • 我可以有多个 config.yml每个域一个 但我想避免这种情况。

  • 你知道方法吗?

    谢谢

    最佳答案

    好的,我已经想通了。

    这并不难。

    我创建了一个自定义 sessionStorage,扩展了默认的 sessionStorage,并在处理选项的地方做了一个简单的覆盖:在那里我计算了我的 cookie_domain 并将它传递给 parent::function :

    use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;

    /**
    * DynamicDomainSessionStorage.
    *
    * @author Julien Devouassoud
    */
    class DynamicDomainSessionStorage extends NativeSessionStorage
    {
    /**
    * setOptions.
    *
    * {@inheritDoc}
    */
    public function setOptions(array $options)
    {
    if(isset($_SERVER['HTTP_HOST'])){
    $domain = substr($_SERVER['HTTP_HOST'], strpos($_SERVER['HTTP_HOST'], '.'));

    $options["cookie_domain"] = $domain;
    }



    return parent::setOptions($options);
    }
    }

    别忘了:

    • 将您的类声明为服务

    • 将此服务设置为存储

    • 设置 save_path 否则 cookie_domain 似乎不起作用(中断 session )

    • 我也设置了一个“名称”,但我认为这不是必需的

    • 代码 config.yml :
    #...
    framework:
    #...
    session:
    storage_id: v3d.session.storage.dynamic_domain
    save_path: %kernel.root_dir%/cache/var/sessions
    name: SFSESSID

    services
    v3d.session.storage.dynamic_domain:
    class: V3d\Bundle\ApplicationBundle\Services\DynamicDomainSessionStorage

    关于symfony 动态设置 cookie_domain,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24766260/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com