使用 2 个实现 UserInterface 的实体进行身份验证

Kév*_*vin 1 php symfony symfony-security symfony5

是否可以有 2 个实体来实现UserInterface

如何在我的警卫中使用它来检查两个类并使用相同的防火墙?

这个想法是公司可以拥有自己的CVTheque或共享的(与CVTheque具有 OneToMany 关系Company)。

我想拥有CandidateUser实体。

  • CVTheque -> OneToMany -> 候选人
  • 用户 -> 多对一 -> 公司。

Candidate并且User将用在该应用被认证同一登录表单。所以我不知道这是否可能以及如何在我的警卫身份验证器上实现这一点。

他们将被重定向到他们自己的仪表板,具体取决于连接的用户(CandidateUser)的实例。

小智 5

最近处理了一个类似的场景。就我而言,刚刚创建了一个chain_provider来封装所需的所有实体:

providers:
    chain_provider:
        chain:
            providers: [provider_one, provider_two]
    provider_one:
        entity:
            class: App\Entity\ProviderOne
            property: username
    provider_two:
        entity:
            class: App\Entity\ProviderTwo
            property: email
security:
    firewalls:
        secured_area:
            # ...
            pattern: ^/login
            provider: chain_provider
Run Code Online (Sandbox Code Playgroud)