Symfony FOS用户包 - 切换用户失败:"用户名" *"不存在。"

时间:2016-07-12 21:10:26

标签: fosuserbundle symfony switch-user

这正是标题所说的 - 我无法弄清楚为什么用户切换不起作用。 在我的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

调用网址

[ProjectPath]/account?_switch_user=testuser

导致错误

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

" TESTUSER"然而,这是一个完全有效的用户,我可以在以标准方式登录时与该用户进行正常登录。 用" _switch_user"调用URL时登录的用户确实有#34; ROLE_ALLOWED_TO_SWITCH" - 但这似乎不是问题所在。 我被困在这里。 任何提示都受到高度赞赏。

修改

堆栈跟踪显示在" SwitchUserListener.php"致电

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

失败并被捕获导致给定错误。

2 个答案:

答案 0 :(得分:4)

我可以让它将fos_userbundle用户提供程序添加到security.yml,如下所示:

firewalls:
..
    main:
        ...
        switch_user:
            provider:   fos_userbundle

答案 1 :(得分:0)

好吧,我犯了一个愚蠢的错误,但也许其他人也犯了同样的错误。我使用电子邮件进行身份验证,但使用用户名来切换用户。确保您使用相同的属性。所以就我而言,我需要使用电子邮件: ?_switch_user=example@email.com