Symfony 4——当我尝试创建会话代理时出错

Symfony 4 -- error when I try to create a Session Proxy

我按照 https://symfony.com/doc/master/session/proxy_examples.html

中的说明进行操作

我更新我的 framework.yaml

framework:
    secret: '%env(APP_SECRET)%'
    #default_locale: en
    #csrf_protection: ~
    #http_method_override: true

# uncomment this entire section to enable sessions
session:
    # With this config, PHP's native session handling is used
    handler_id: App\Session\CookieEncryptedSession

#esi: ~
#fragments: ~
php_errors:
    log: true

我也创建了自己的班级:

<?php
namespace App\Session;

use Defuse\Crypto\Crypto;
use Defuse\Crypto\Key;
use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy;

class CookieEncryptedSession extends SessionHandlerProxy
{
  private $key;

  public function __construct(\SessionHandlerInterface $handler, Key $key)
  {
    $this->key = $key;

    parent::__construct($handler);
  }

  public function read($id)
  {
    $data = parent::read($id);

    return Crypto::decrypt($data, $this->key);
  }

  public function write($id, $data)
  {
    $data = Crypto::encrypt($data, $this->key);

    return parent::write($id, $data);
  }
}

当我尝试 运行 使用控制台的服务器时,出现此错误:

In CheckCircularReferencesPass.php line 67:

  Circular reference detected for service "App\Session\CookieEncryptedSession  
  ", path: "App\Session\CookieEncryptedSession -> App\Session\CookieEncrypted  
  Session".     

知道错在哪里吗?

谢谢

奥斯卡

自动装配正在尝试将服务注入自身,因为服务实现了构造函数所需的接口。 CookieEncryptedSession 通过

实现 SessionHandlerInterface
class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterface

在您的服务中手动设置服务:CookieEncryptedSession,这样您就可以select您想要的 SessionHandlerInterface 服务。

  • NativeSessionHandler
  • NativeFileSessionHandler
  • DbalSessionHandler
  • 等等