Domanda

Ho bisogno di reindirizzamento disabilitare dopo il check login, perché ho bisogno di ottenere solo che l'accesso era successo o meno. Dopo la presentazione / url login_check Dammi i dati corretti, ma mantenere il reindirizzamento a / login (in caso di fallimento).
/ Login è vuoto dopo.
Sto provando ad installare form di login utilizzando extjs 4 quindi ho bisogno di convalidare attraverso una richiesta AJAX posta. login_check dovrebbe autenticare, creare sessione utente e la restituzione se fosse successo o il fallimento, ma non inoltro da nessuna parte.

il mio aspetto login.html.twig come:

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

e in security.yml:

firewalls:
    main:
        form_login:
            provider: fos_userbundle
            failure_path:  null
            failure_forward: false
È stato utile?

Soluzione

Creare un gestore di autenticazione:

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
        }
    }
}

Registra il gestore come servizio:

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

registrare il servizio nel firewall:

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

Questo è un esempio di massima per darvi l'idea generale - è necessario capire i dettagli da soli. Se sei bloccato e hanno bisogno di ulteriori chiarimenti, porre le vostre domande nei commenti e cercherò di elaborare l'esempio.

Altri suggerimenti

Il normale flusso di symfony è a favore usare una pagina di login, se non si è connessi a, che funziona bene per gli esseri umani. Ma ti sembra di essere alla ricerca di una soluzione a livello di programmazione.

Hai provato impostazione _target_path nel modulo, per dichiarare ciò che la "pagina successiva" dovrebbe essere? Symfony sta andando sempre avanti da qualche parte, ma è possibile impostare che da qualche parte dove si vuole.

Ho trovato queste due pagine utili per descrivere il funzionamento interno del modulo di login:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top