【发布时间】:2017-04-05 04:00:40
【问题描述】:
我正在使用JWTLexikBundle 和JWTRefreshTokenBundle。它工作正常,直到我想向令牌有效负载添加更多数据(准确地说是用户 ID)。
它在登录时工作正常,但在刷新令牌时不会抛出错误,因为我发现它使用不同的 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 就足够了吗?
【问题讨论】:
-
我认为您需要定义自己的用户提供程序服务:symfony.com/doc/current/security/custom_provider.html 我确实使用 debug:container 查看是否可以找到用户提供程序服务 ID,但没有运气。无论如何,自定义用户提供程序很容易实现并且可以解决问题。
标签: php symfony doctrine-orm jwt