How to disable redirection after login_check in Symfony 2

前端 未结 2 1286
情话喂你
情话喂你 2020-11-28 04:15

I need to disable redirection after login check, because I need to get only that the login was success or not. After submission /login_check url give me the right data, but

相关标签:
2条回答
  • 2020-11-28 04:44

    Create an authentication handler:

    namespace YourVendor\UserBundle\Handler;
    
    // "use" statements here
    
    class AuthenticationHandler
    implements AuthenticationSuccessHandlerInterface,
               AuthenticationFailureHandlerInterface
    {
        public function onAuthenticationSuccess(Request $request, TokenInterface $token)
        {
            if ($request->isXmlHttpRequest()) {
                $result = array('success' => true);
                return new Response(json_encode($result));
            } else {
                // Handle non XmlHttp request here
            }
        }
    
        public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
        {
            if ($request->isXmlHttpRequest()) {
                $result = array('success' => false);
                return new Response(json_encode($result));
            } else {
                // Handle non XmlHttp request here
            }
        }
    }
    

    Register the handler as a service:

    services:
        authentication_handler:
            class: YourVendor\UserBundle\Handler\AuthenticationHandler
    

    Register the service in the firewall:

    firewalls:
        main:
            form_login:
                success_handler: authentication_handler
                failure_handler: authentication_handler
    

    This is a rough example to give you the general idea — you'll need to figure out the details by yourself. If you're stuck and need further clarifications, put your questions in the comments and I'll try to elaborate the example.

    0 讨论(0)
  • 2020-11-28 04:45

    The normal symfony flow is to redirect you to a login page if you are not logged in, which works fine for humans. But you seems to be looking for a programmatic solution.

    Have you tried setting _target_path in your form, to declare what the "next page" should be? Symfony is always going to forward you somewhere, but you can set that somewhere to wherever you want.

    I found these two pages useful for describing the inner workings of the login form:

    • How to customize your form login (search for _target_path)
    • Security page in the handbook
    0 讨论(0)
提交回复
热议问题