2016-07-12 44 views
0

這真的是標題說的 - 我不明白爲什麼用戶切換不起作用。 在我security.yml我:Symfony FOS用戶包 - 切換用戶失敗:「用戶名」*「不存在」。

firewalls: 
    # disables authentication for assets and the profiler, adapt it according to your needs 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 

    main: 
     pattern: ^/ 
     form_login: 
      provider:      fos_userbundle     # using FOSUserBundle for user authentication 
      check_path:      fos_user_security_check 
      login_path:      fos_user_security_login 
      csrf_token_generator:   security.csrf.token_manager  # CSRF token - can be changed? 
      default_target_path:   default_logged_in_target  # default route to go to after login 
#    default_target_path:   fos_user_profile_show 
      always_use_default_target_path: true       # ignore the requested url and allways go to default route after login 
     logout: 
       path:       fos_user_security_logout 
       target:      default_loged_out_target 

     logout:  true 
     anonymous: true 
     switch_user: true 

調用URL

[ProjectPath]/account?_switch_user=testuser 

導致錯誤

Switch User failed: "Username "testuser" does not exist." 

「testuser的」 不過是一個完全有效的用戶,我可以登錄在以標準方式登錄時與該用戶正常地進行通信。 我使用「_switch_user」調用URL時登錄的用戶具有角色「ROLE_ALLOWED_TO_SWITCH」 - 但這似乎不成問題。 我被困在這裏。 任何提示,非常感謝。

編輯:

的堆棧跟蹤顯示,在 「SwitchUserListener.php」 調用

$this->tokenStorage->setToken($this->attemptSwitchUser($request)); 

失敗並且釣到導致給定的錯誤。

回答

2

我能得到它的工作添加fos_userbundle用戶提供商security.yml這樣的:

firewalls: 
.. 
    main: 
     ... 
     switch_user: 
      provider: fos_userbundle 
+0

我有一個類似的問題,你的提示幫助我解決這個問題。我有一個空的in_memory提供程序(用於測試)和另一個提供程序。剛剛刪除了in_memory提供程序,它工作。看起來默認情況下,第一個提供程序用於獲取用戶... –

相關問題