tutorial - symfony php descargar
Cómo deshabilitar la redirección después de login_check en Symfony 2 (2)
Necesito deshabilitar la redirección después de la verificación de inicio de sesión, porque necesito obtener solo que el inicio de sesión fue exitoso o no. Después del envío / login_check url, dame los datos correctos, pero sigue redirigiendo a / login (en caso de error).
/ login está en blanco después de eso.
Estoy tratando de configurar el formulario de inicio de sesión usando extjs 4, así que necesito validarlo a través de una solicitud posterior ajax. login_check debe autenticarse, crear sesión de usuario y devolver si fue exitosa o fallida, pero no se reenvía a ninguna parte.
mi login.html.twig se ve así:
{% if is_granted("IS_AUTHENTICATED_REMEMBERED") %}
{ success:true }
{% else %}
{ success: false }
{% endif %}
y en security.yml:
firewalls:
main:
form_login:
provider: fos_userbundle
failure_path: null
failure_forward: false
Crear un controlador de autenticación:
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
}
}
}
Registre el controlador como un servicio:
services:
authentication_handler:
class: YourVendor/UserBundle/Handler/AuthenticationHandler
Registre el servicio en el firewall:
firewalls:
main:
form_login:
success_handler: authentication_handler
failure_handler: authentication_handler
Este es un ejemplo aproximado para darle una idea general: deberá averiguar los detalles usted mismo. Si estás atascado y necesitas más aclaraciones, escribe tus preguntas en los comentarios y trataré de explicar el ejemplo.
El flujo normal de Symfony es redirigirlo a una página de inicio de sesión si no está conectado, lo que funciona bien para los seres humanos. Pero parece que estás buscando una solución programática.
¿Has intentado configurar _target_path en tu formulario para declarar cuál debería ser la "página siguiente"? Symfony siempre lo enviará a algún lado, pero puede establecerlo en cualquier lugar donde desee.
Encontré estas dos páginas útiles para describir el funcionamiento interno del formulario de inicio de sesión:
- Cómo personalizar el inicio de sesión de su formulario (buscar _target_path)
- Página de seguridad en el manual