1

それはまさに見出しの状態です-ユーザーの切り替えが機能しない理由がわかりません。私のsecurity.ymlには次のものがあります:

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));

失敗してキャッチされ、指定されたエラーが発生します。

4

2 に答える 2

4

次のように、fos_userbundle ユーザー プロバイダーを security.yml に追加して動作させることができました。

firewalls:
..
    main:
        ...
        switch_user:
            provider:   fos_userbundle
于 2016-07-13T11:08:06.030 に答える