Php 控制器必须返回响应-登录检查防火墙拦截

Php 控制器必须返回响应-登录检查防火墙拦截,php,symfony,Php,Symfony,我正在用symfony构建一个登录表单,我得到一个异常“控制器必须返回一个响应(给定null)。您是否忘记在控制器的某个地方添加一个返回语句 Symfony中的每个操作都必须有响应,这是有道理的,但在这种情况下,防火墙应该通过FormLoginAuthenticator拦截并验证用户 class FormLoginAuthenticator extends AbstractFormLoginAuthenticator { private $router; 我认为原因是security.

我正在用symfony构建一个登录表单,我得到一个异常“控制器必须返回一个响应(给定null)。您是否忘记在控制器的某个地方添加一个返回语句

Symfony中的每个操作都必须有响应,这是有道理的,但在这种情况下,防火墙应该通过FormLoginAuthenticator拦截并验证用户

class FormLoginAuthenticator extends AbstractFormLoginAuthenticator
{
    private $router;
我认为原因是security.yml中的配置错误

这是我的安全

security:
    encoders:
      AppBundle\Entity\User: bcrypt
    providers:
      in_memory:
        memory:
          users:
            admin:
              password: test1234
              roles: 'ROLE_ADMIN'
      database_users:
          entity: { class: AppBundle:User, property: email }
    firewalls:
        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        default:
          anonymous: ~
          http_basic: ~
        secured_area:
            pattern:    ^/
            form_login:
              check_path: /login_check
              login_path: /login
        main:
            pattern:    ^/
            form_login:
                check_path: /login_check
                login_path: /login
                always_use_default_target_path: true
                default_target_path: /secured
    access_control:
        - {path: ^/admin,roles: ROLE_ADMIN}
        - {path: ^/showRoutes,roles: ROLE_ADMIN}
        - {path: ^/routeDetails,roles: ROLE_ADMIN}
        - {path: ^/allRoutes,roles: ROLE_ADMIN}
      #  - { path: ^/getTripOverview, roles: ROLE_USER }
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, methods: [GET] }
这是我的登录控制器的代码

class SecurityController extends Controller
{



    /**
     * @Route("/login", name="login")
     */
    public function loginAction(Request $request)
    {
    $helper = $this->get('security.authentication_utils');

    return $this->render(
        'AppBundle::Login.html.twig',
        array(
            'last_username' => $helper->getLastUsername(),
            'error'         => $helper->getLastAuthenticationError(),
        )
    );
}

/**
 * @Route("/login_check", name="security_login_check")
 */
public function loginCheckAction()
{
}

/**
 * @Route("/logout", name="logout")
 */
public function logoutAction()
{

}
}

这是我的验证器

class FormLoginAuthenticator extends AbstractFormLoginAuthenticator
{
    private $router;
私人编码器

public function __construct(RouterInterface $router, UserPasswordEncoderInterface $encoder)
{
    $this->router = $router;
    $this->encoder = $encoder;
}

public function getCredentials(Request $request)
{
    if ($request->getPathInfo() != '/login_check') {
        return;
    }

    $email = $request->request->get('_email');
    $request->getSession()->set(Security::LAST_USERNAME, $email);
    $password = $request->request->get('_password');

    return [
        'email' => $email,
        'password' => $password,
    ];
}

public function getUser($credentials, UserProviderInterface $userProvider)
{
    $email = $credentials['email'];

    return $userProvider->loadUserByUsername($email);
}

public function checkCredentials($credentials, UserInterface $user)
{
    $plainPassword = $credentials['password'];
    if ($this->encoder->isPasswordValid($user, $plainPassword)) {
        return true;
    }

    throw new BadCredentialsException();
}

public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
    $url = $this->router->generate('getTripOverview');

    return new RedirectResponse($url);
}

public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
{
    $request->getSession()->set(Security::AUTHENTICATION_ERROR, $exception);

    $url = $this->router->generate('login');

    return new RedirectResponse($url);
}

protected function getLoginUrl()
{
    return $this->router->generate('login');
}

protected function getDefaultSuccessRedirectUrl()
{
    return $this->router->generate('getTripOverview');
}

public function supportsRememberMe()
{
    return false;
}

}

尝试从
loginCheckAction
Action返回一些响应您是否尝试在防火墙的检查路径配置中使用路由名称而不是url:check\u path:security\u login\u check而不是check\u path:/login\u check