Php 如何在登录\签入Symfony 2后禁用重定向

Php 如何在登录\签入Symfony 2后禁用重定向,php,symfony,Php,Symfony,我需要在登录检查后禁用重定向,因为我只需要获得登录是否成功。提交/login\u检查url后,给我正确的数据,但继续重定向到/login(失败)。 /之后登录为空。 我正在尝试使用ExtJS4设置登录表单,因此需要通过ajax post请求进行验证。 登录检查应进行身份验证,创建用户会话,并返回是否成功,但不在任何地方转发 我的login.html.twig看起来像: {% if is_granted("IS_AUTHENTICATED_REMEMBERED") %} { success

我需要在登录检查后禁用重定向,因为我只需要获得登录是否成功。提交/login\u检查url后,给我正确的数据,但继续重定向到/login(失败)。
/之后登录为空。
我正在尝试使用ExtJS4设置登录表单,因此需要通过ajax post请求进行验证。 登录检查应进行身份验证,创建用户会话,并返回是否成功,但不在任何地方转发

我的login.html.twig看起来像:

{% if is_granted("IS_AUTHENTICATED_REMEMBERED") %}
    { success:true }
{% else %}
    { success: false }
{% endif %}
在security.yml中:

firewalls:
    main:
        form_login:
            provider: fos_userbundle
            failure_path:  null
            failure_forward: false

创建身份验证处理程序:

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
        }
    }
}
将处理程序注册为服务:

services:
    authentication_handler:
        class: YourVendor\UserBundle\Handler\AuthenticationHandler
在防火墙中注册服务:

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

这是一个粗略的例子,可以让你大致了解情况——你需要自己弄清楚细节。如果您陷入困境,需要进一步澄清,请在评论中提出您的问题,我将尝试详细说明示例。

正常的symfony流程是在您未登录时将您重定向到登录页面,这对人类来说很好。但您似乎正在寻找一种编程解决方案

您是否尝试在表单中设置_target_path,以声明“下一页”应该是什么?Symfony总是将您转发到某个地方,但您可以将该位置设置为任意位置

我发现这两个页面对于描述登录表单的内部工作非常有用:

  • (搜索_目标_路径)

你能解释一下你的用例吗?比如说,你可以了解一下这个应用程序的背景知识吗?我正在尝试使用extjs 4设置登录。我通过ajax post将表单发送给symfony进行检查,但是在检查登录页面的get request appair之后,如果不是空的话,它可能还可以,所以js只是一直等待获取可以处理的数据。成功处理程序和失败处理程序选项可以是数组?如果我需要安装一些bundle,并且作为其配置的一部分,我需要注册bundle提供的success\u处理程序和failure\u处理程序,该怎么办。但他们已经在我自己的经纪人那里注册了。如何注册多个处理程序?