2017-04-04 88 views
1

我正在使用JWTLexikBundleJWTRefreshTokenBundle。它工作正常,直到我想添加更多的數據到令牌有效載荷(用戶ID是準確的)。 它登錄時正常工作,但刷新令牌時不會拋出錯誤,因爲我想通過使用不同的UserProvider並使用不同的UserEntity(默認值爲Symfony\Component\Security\Core\User\User)。現在,我有我的供應商配置如下Symfony - 通過ID獲取用戶提供商

providers: 
    db_user_provider: 
     entity: 
      class: PrototypeBundle\Entity\User 
      property: username 

庫JwtRefreshTokens有自定義配置UserProvider parmeter,但我不知道是否或在那裏我可以得到這一塊上面聲明。 我想那一定是@doctrine.orm.security.user.provider一些實例,但它是抽象的所以這這麼想的工作

gesdinet_jwt_refresh_token: 
    firewall: main 
    user_provider: '@doctrine.orm.security.user.provider' 

我試圖做bin/console debug:container來發現它,但它是無處可在那裏發現。無論如何,要獲得該服務標識而不是聲明它的特定性,然後在任何地方使用該聲明?如果沒有,如何以最合適的方式完成?使用UserRepository和properInterface就足夠了?

+0

我想你需要定義自己的用戶提供服務:http://symfony.com/doc/current/security/custom_provider.html我沒有使用調試各地位戳:容器,看是否能找到用戶提供者服務ID,但沒有運氣。無論如何,一個自定義用戶提供者很容易實現,並且會訣竅。 – Cerad

回答

1

這是'security.user.provider.concrete.'.$name,在你的情況 - security.user.provider.concrete.db_user_provider

這是在\Symfony\Bundle\SecurityBundle\DependencyInjection\SecurityExtension::getUserProviderId方法中生成的。

我不知道你是否真的應該依賴這種行爲,因爲我想這可能只是一個實現細節。

+0

謝謝,這是訣竅! :D 我會嘗試圍繞它尋找一些更好的解決方案,但直到它必須停留。 – Vini