gpt4 book ai didi

symfony - 如何从 Symfony2 中的服务获取用户对象

转载 作者:行者123 更新时间:2023-12-04 12:56:09 26 4
gpt4 key购买 nike

我的网站正在使用第三方服务进行身份验证以及其他一些功能,因此我设置了一个服务来为我执行所有 API 调用,而我需要能够访问用户对象的正是这个服务。
我尝试将 security.context 服务注入(inject)到我的 API 服务中,但我得到了 ServiceCircularReferenceException,因为我的用户身份验证提供程序引用了 API 服务(它必须这样做才能对用户进行身份验证)。
所以我得到了一个链

security.context -> authentication provider -> 
user provider -> API service -> security.context

我正在努力寻找另一种获取用户对象的方法,我看不到任何明显的方式来拆分这个链。

我的配置都在 config.yml 中定义,这里是相关位
myapp.database:
class: Pogo\MyAppBundle\Service\DatabaseService
arguments:
siteid: %siteid%
entityManager: "@doctrine.orm.entity_manager"
myapp.apiservice:
class: Pogo\MyAppBundle\Service\TicketingService
arguments:
entityManager: "@myapp.database"
myapp.user_provider:
class: Pogo\MyAppBundle\Service\APIUserProvider
arguments:
entityManager: "@myapp.database"
ticketingAdapter: "@myapp.apiservice"
securityContext: "@security.context"
myapp.authenticationprovider:
class: Pogo\MyAppBundle\Service\APIAuthenticationProvider
arguments:
userChecker: "@security.user_checker"
encoderFactory: "@security.encoder_factory"
userProvider: "@myapp.user_provider"

myapp.user_provider 是我在 security.yml 中定义为我的用户提供程序服务的服务,我认为它是 security.context 引用的方式

最佳答案

security.context服务有太多的责任。这就是为什么它在 Symfony 2.6 中被弃用并且两个新服务取而代之的原因; security.token_storagesecurity.authorization_checker .更新可能会解决您的一些问题。

在这里阅读更多:http://symfony.com/blog/new-in-symfony-2-6-security-component-improvements

还有:为什么用户提供者需要安全上下文? UserProvider 只能通过用户名加载用户。仅此而已...在此处阅读有关自定义用户提供程序的更多信息:http://symfony.com/doc/current/cookbook/security/custom_provider.html

关于symfony - 如何从 Symfony2 中的服务获取用户对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6388199/

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