Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to go back to referer after login failure?

For login success there is a parameter use_referer: true. For login failure there is only failure_path, which isn't what I'm looking for.

Second thing: How to do that and pass error message?

Third thing: How to go back to referrer after logout?

like image 764
Wojciech Kulik Avatar asked Jan 29 '12 23:01

Wojciech Kulik


1 Answers

I solved it.

There is solution: How to disable redirection after login_check in Symfony 2

and here is code which solves my problem:

<?php  namespace Acme\MainBundle\Handler;  use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface; use Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface; use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RedirectResponse;  class AuthenticationHandler implements AuthenticationFailureHandlerInterface, LogoutSuccessHandlerInterface {     public function onAuthenticationFailure(Request $request, AuthenticationException $exception)     {                $referer = $request->headers->get('referer');                $request->getSession()->setFlash('error', $exception->getMessage());          return new RedirectResponse($referer);     }      public function onLogoutSuccess(Request $request)      {         $referer = $request->headers->get('referer');         return new RedirectResponse($referer);     } } 

to handle events add to security.yml for example:

form_login:     check_path: /access/login_check     login_path: /     use_referer: true     failure_handler: authentication_handler   logout:     path:   /access/logout     target: /     success_handler: authentication_handler  

and to config.yml:

services:     authentication_handler:         class: Acme\MainBundle\Handler\AuthenticationHandler 
like image 79
Wojciech Kulik Avatar answered Sep 28 '22 13:09

Wojciech Kulik