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

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

{% if is_granted("IS_AUTHENTICATED_REMEMBERED") %}
    { success:true }
{% else %}
    { success: false }
{% endif %}

和安全性。

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

这是一个为您提供总体想法的粗略示例 - 您需要自己弄清楚细节。如果您卡住并需要进一步澄清,请在评论中提出问题,我将尝试详细说明该示例。

其他提示

正常的符号流是如果您未登录,则将您重定向到登录页面,对人类来说效果很好。但是您似乎正在寻找一个程序化解决方案。

您是否尝试在表单中设置_target_path,以声明“下一页”应该是什么? Symfony总是会向您转移到某个地方,但是您可以将其设置为任何想要的地方。

我发现这两个页面可用于描述登录表格的内部工作:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top