我正在使用JWTLexikBundle与 JWTRefreshTokenBundle 。它工作得很好,直到我想向 token 有效负载添加更多数据(准确地说是用户 ID)。
它在登录时工作正常,但在刷新 token 时不会抛出错误,因为我发现它使用不同的 UserProvider 并由于不同的 UserEntity (默认值, Symfony\Component\Security\Core\User\User
)。现在,我的提供程序配置如下
providers:
db_user_provider:
entity:
class: PrototypeBundle\Entity\User
property: username
JwtRefreshTokens 库具有自定义 UserProvider 的配置参数,但我不知道是否或在哪里可以获得上面声明的这个参数。
我认为它一定是 @doctrine.orm.security.user.provider
的某个实例,但它是抽象的,所以这不起作用
gesdinet_jwt_refresh_token:
firewall: main
user_provider: '@doctrine.orm.security.user.provider'
我尝试通过执行 bin/console debug:container
来找到它,但在那里找不到它。除了专门声明然后在各处使用该声明之外,是否还有其他方法可以获取该服务 ID?如果不是,如何才能以最正确的方式做到这一点?使用 UserRepository 和适当的接口(interface)就足够了吗?
最佳答案
它是'security.user.provider.concrete.'.$name
,在您的情况下 - security.user.provider.concrete.db_user_provider
。
这是在 \Symfony\Bundle\SecurityBundle\DependencyInjection\SecurityExtension::getUserProviderId
方法中生成的。
我不知道您是否真的应该依赖这种行为,因为我想这可能只是一个实现细节。
关于php - Symfony - 通过 ID 获取用户提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43210664/