Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用相同的Symfony 2/3 project DB以编程方式登录到不同的域_Symfony_Session - Fatal编程技术网

使用相同的Symfony 2/3 project DB以编程方式登录到不同的域

使用相同的Symfony 2/3 project DB以编程方式登录到不同的域,symfony,session,Symfony,Session,我有一个单一的Symfony项目。但它管理最终客户使用的N个域,因此我们可以拥有不同的品牌和策略。在另一个域中,我们可以访问项目的后台视图。 在customers视图中,我们希望在相应的域中模拟我们的客户 我的策略是 当一个职员用户登录到我们的任何一个域时,我想自动地、静默地登录到其他域。因此,当按钮重定向到另一个域/?\u username=XXX时,将无法登录 我的不完全执行是错误的 -听着,登录成功了, -从请求中获取用户名和密码 -对api的调用 $data['_username'] =

我有一个单一的Symfony项目。但它管理最终客户使用的N个域,因此我们可以拥有不同的品牌和策略。在另一个域中,我们可以访问项目的后台视图。 在customers视图中,我们希望在相应的域中模拟我们的客户

我的策略是

当一个职员用户登录到我们的任何一个域时,我想自动地、静默地登录到其他域。因此,当按钮重定向到另一个域/?\u username=XXX时,将无法登录

我的不完全执行是错误的 -听着,登录成功了, -从请求中获取用户名和密码 -对api的调用

$data['_username'] = $req->request->get('username');
    $data['_password'] = $req->request->get('password');
    $response = $this->client->post(‘thedomain/noauth/login', [
        'form_params' => $data,
            ]
    );
如果可能的话(我不知道)应该能够用这个浏览器登录它的域

我不知道是否可以使用我在API端点中创建的JWT令牌并更改admin firewall区域的安全配置来实现,或者可能需要使用UserNamePasswordToken模拟完整的登录

也许我不应该依赖端点请求对象

$jwt = $this->get('lexik_jwt_authentication.jwt_manager');
$jwt_token = $jwt->create($user);
 $token = new UsernamePasswordToken($user, null, 'firewallname', $user->getRoles());
$this->get("security.token_storage")->setToken($token);
$session = $request->getSession();
$session->set('_security_main', serialize($token));
此外,我不知道在浏览器上存储cookie是否还有更多的工作要做

我有很多疑问,为了缩短我的测试时间,非常感谢您的帮助

更新

尝试blast解决方案(请参见答案1),当我运行composer require“blast项目/条令会话包”时,我遇到以下错误:

  Problem 1
    - Installation request for blast-project/doctrine-session-bundle ^0.1.0 -> satisfiable by blast-project/doctrine-session-bundle[0.1].
    - blast-project/doctrine-session-bundle 0.1 requires blast-project/base-entities-bundle dev-master -> satisfiable by blast-project/base-entities-bundle[dev-master] but these conflict with your requirements or minimum-stability.
因此,我将这一行临时添加到我的composer.json
“最小稳定性”:“dev”但仍会出错,对SF3不友好吗

  Problem 1
    - Can only install one of: symfony/symfony[v3.2.4, 2.8.x-dev].
    - Can only install one of: symfony/symfony[2.8.x-dev, v3.2.4].
    - Can only install one of: symfony/symfony[2.8.x-dev, v3.2.4].
    - blast-project/core-bundle dev-master requires symfony/symfony 2.8.* -> satisfiable by symfony/symfony[2.8.x-dev].
    - blast-project/base-entities-bundle dev-master requires blast-project/core-bundle dev-master -> satisfiable by blast-project/core-bundle[dev-master].
    - blast-project/doctrine-session-bundle 0.1 requires blast-project/base-entities-bundle dev-master -> satisfiable by blast-project/base-entities-bundle[dev-master].
    - Installation request for blast-project/doctrine-session-bundle ^0.1.0 -> satisfiable by blast-project/doctrine-session-bundle[0.1].
    - Installation request for symfony/symfony (locked at v3.2.4, required as 3.*) -> satisfiable by symfony/symfony[v3.2.4].

您应该只将会话存储在共享数据库中,因为它是共享的。您没有要执行的实现。您只需将会话存储在数据库中。symfony将自行设置cookie,然后当您访问其他服务器时,它们可以读取此cookie,因为它们从同一数据库读取会话数据

这是我用来做这件事的包:

还有我做的项目:

听起来不错,但在SF3下,我无法按照composer的要求或安装库。。。。我更新了包含错误的问题…我将在本周末尝试更新捆绑包的自述,以包含轻松安装说明