Php 正在对Symfony中的特定子域进行身份验证

Php 正在对Symfony中的特定子域进行身份验证,php,symfony,Php,Symfony,这似乎是一个足够简单的问题,但我似乎在任何地方都找不到明确的答案 我正在编写一个应用程序,将由多家公司和多个用户使用。每家公司及其用户只能访问其数据。我希望每个公司都有自己的子域:即company1.myapp.com、company2.myapp.com等 当他们输入那个URL时,我正在使用子域从数据库获取用户信息,他们可以从那里登录。我将他们的公司ID(子域)设置为会话变量,以便应用程序知道应该从数据库中提取哪些数据 我不明白的是: -如何将身份验证锁定到一个子域?i、 e.一旦通过身份验证

这似乎是一个足够简单的问题,但我似乎在任何地方都找不到明确的答案

我正在编写一个应用程序,将由多家公司和多个用户使用。每家公司及其用户只能访问其数据。我希望每个公司都有自己的子域:即company1.myapp.com、company2.myapp.com等

当他们输入那个URL时,我正在使用子域从数据库获取用户信息,他们可以从那里登录。我将他们的公司ID(子域)设置为会话变量,以便应用程序知道应该从数据库中提取哪些数据

我不明白的是: -如何将身份验证锁定到一个子域?i、 e.一旦通过身份验证,如果我将域从company1.myapp.com更改为company2.myapp.com,我如何确保系统知道用户仅通过了company1的身份验证

欢迎指点

谢谢,
格雷格是你的答案。我链接的相关烹饪书条目包含了您需要的所有信息。

多亏了网站上的一些帮助,我似乎已经使用了一个监听器

定义监听器#config.yml——注意优先级,否则页面似乎在终止会话之前呈现

services:        
  company_listener:
    class: myApp\SecurityBundle\Controller\CompanyListener
    arguments: 
        security: "@security.context", 
        container: "@service_container"
    tags:
        - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 64 }
侦听器类

class CompanyListener extends controller
{

public static $companyID;
private $securityContext;
protected $container;

public function __construct(SecurityContext $context, $container)
{
    $this->securityContext = $context;
    $this->container = $container;
}

public function onKernelRequest(GetResponseEvent $event)
{       

    $request = $event->getRequest();
    $session = $request->getSession();              

    $currentHost = $request->getHost();

    if(is_object($session)){
        $companyID = $session->get('companyID');
        $sessionHost = $session->get('subdomain');

        if ($sessionHost != $currentHost) {
            $this->get('request')->getSession()->invalidate();
        }           
    }

    $session->set('company', $currentHost);

}
}

不幸的是,我没有使用学说,所以ACL对我没有好处。我找到了另一个解决方案,它使用了一个监听器,我将把它作为一个答案发布。谢谢你的回复!好吧,你可以不用条令就使用它,就像所有其他Symfony组件一样。您已经找到了一个解决方案,所以无论什么对您有效(:在引导标题下有一个大注释,上面说“ACL系统需要至少配置一个Doctrine DBAL连接”。这足以让我感到厌烦!再次感谢您的回复。