2017-08-15 72 views
3

我正在使用Symfony 3.3和FOSUserBundle 2.0。我無法使重置密碼功能正常工作。我去請求重置頁面,輸入電子郵件或用戶名,然後點擊提交,它會將我重定向到登錄頁面,而不會在視圖中顯示任何錯誤。 我看着日誌,它給我這個錯誤:FOSUserBundle重置密碼不適用於模擬用戶配置

security.DEBUG: Access denied, the user is not fully authenticated; redirecting to authentication entry point. {"exception":"[object] (Symfony\\Component\\Security\\Core\\Exception\\AccessDeniedException(code: 403): Access Denied. at .../vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall/SwitchUserListener.php:125)"} [] 

Security.yml:

security: 
encoders: 
    FOS\UserBundle\Model\UserInterface: sha512 

{...} 

firewalls: 
    main: 
     pattern: ^/ 
     form_login: 
      provider: fos_userbundle 
      csrf_token_generator: security.csrf.token_manager 
      default_target_path: /verifInit 
     logout:  true 
     anonymous: true 
     switch_user: 
      role: ROLE_ADMIN 
      provider: fos_userbundle 
      parameter: username 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 

providers: 
    in_memory: 
     memory: 
      users: 
       user: { password: userpass, roles: [ 'ROLE_USER' ] } 
       admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] } 
    fos_userbundle: 
     id: fos_user.user_provider.username 

access_control: 
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/admin/, role: ROLE_ADMIN } 

當我刪除security.yml switch_user部分,它的工作好。你知道爲什麼嗎?我需要我的項目的switch_user功能,所以我不能刪除它。

+0

你可以發佈security.yml的內容嗎?和/或您是否在負責此操作的控制器中添加了任何與Auth相關的代碼? – Vamsi

+0

我編輯了我的問題 –

+0

您沒有更改用戶實體? –

回答

0
switch_user: true 

security: 
    role_hierarchy: 
     ROLE_ADMIN: [ROLE_USER, ROLE_ALLOWED_TO_SWITCH] 

嘗試這種方式。

+0

重置密碼正在與您的參數!但它打破了切換用戶。 我有這個錯誤:'開關用戶失敗:「用戶名」1000「不存在。」' 但我有一個用戶在我的數據庫中用戶名爲1000. –

+0

我通過在'switch_user'中添加'provider:fos_userbundle'得到了它的工作。 –