在symfony2中手动验证用户 我需要手动验证一个用户,它工作,但我有一个问题。我有2个防火墙,当我登录到一个防火墙时,SimfONE考虑我也登录到另一个防火墙。

在symfony2中手动验证用户 我需要手动验证一个用户,它工作,但我有一个问题。我有2个防火墙,当我登录到一个防火墙时,SimfONE考虑我也登录到另一个防火墙。,symfony,authentication,symfony-2.5,Symfony,Authentication,Symfony 2.5,这是我的防火墙: firewalls: admin: pattern: ^/admin form_login: check_path: /admin/login_check login_path: /admin/login username_parameter: username password_parameter: passw

这是我的防火墙:

    firewalls:
    admin:
        pattern: ^/admin
        form_login:
            check_path: /admin/login_check
            login_path: /admin/login
            username_parameter:       username
            password_parameter:       password
            default_target_path: /admin
        logout:
             path: /admin/logout
             target: /admin/login
        security: true
        anonymous: true
    user:
        pattern: ^/
        form_login:
            check_path: /login_check
            login_path: /login
            username_parameter:       username
            password_parameter:       password
            default_target_path: /
        logout:
             path: /logout
             target: /login
        security: true
        anonymous: true
下面是登录管理员防火墙的代码:

public function checkAction(Request $request) {
            $params = $request->request->all();
            $url = 'http://api.remote/login_check';
            $result = HelperController::my_file_read($url,$params,null,false,false);
            if ($result["code"] == 200) {
                $session = new Session();
                $session->set("token_adm",$result["datas"]->token);
                $url = 'http://api.remote/getCurrentUser';
                $resultContent = HelperController::my_file_read($url,$params,null,false,false);
                $session->set($result["datas"]->token,$resultContent["datas"]->datas);
                $token = new UsernamePasswordToken($resultContent["datas"]->datas->username, null, "admin", $resultContent["datas"]->datas->role);
    >username, null, "admin", $roles);
                $this->get("security.context")->setToken($token);
                $this->get('session')->set('_security_admin',serialize($token));
                return $this->redirect($this->generateUrl('eip_admin_homepage', array()));
            }
            $this->get('session')->getFlashBag()->add('notice', "the username and password combination you have entered is invalid");
            return $this->redirect($this->generateUrl('eip_admin_login', array()));
        }

谢谢。

您的防火墙^/admin将与主防火墙^/匹配,因此我认为这种行为是合乎逻辑的,但如果我登录/admin并转到/someRoute,我仍然未经验证,因此它没有意义。当然,它有意义,请查看类似目录结构的模式。您在^/内,因此模式匹配您完全正确这很有意义,但我确实将^/更改为^/用户,但当我登录/admin/login时,我仍在另一个防火墙中登录。您是否清除了缓存?