2015-04-22 12 views
12

Sto lavorando con il sistema di autenticazione Laravel 5 fornito di default. Dopo il logout, un utente viene reindirizzato alla pagina principale, ma vorrei cambiarlo. Sono riuscito a farlo per il processo "login" e "registrazione" definendo "$ redirectTo" in "AuthController.php". Ma per "logout", ho definito "$ redirectAfterLogout" nello stesso posto ma sembra non essere preso in considerazione.Come cambiare l'URL di reindirizzamento quando si disconnette?

Qualcuno potrebbe spiegarmi dov'è il problema e come risolverlo? Grazie mille.

risposta

33

Per laravel 5,

Aperto AuthController classe: app/HTTP/Controller/Aut/AuthController.php

Aggiungi al di sotto struttura al classe

protected $redirectAfterLogout = 'auth/login'; 

è possibile modificare auth/login con qualsiasi URL.

+0

Questo è strano. L'ho già provato senza successo ... ma quando ho provato di nuovo pochi minuti fa, funziona. Grazie! – kururin

+0

@kururin Ecco perché è stato appena aggiunto ... https://github.com/laravel/framework/commit/aa1204448a0d89e2846cbc383ce487df6efd9fc8 – lukasgeiter

+0

che si chiama awesomeness ... grazie –

2

Il reindirizzamento dopo il logout è codificato nel tratto AuthenticatesAndRegistersUsers. È possibile ignorare che nel vostro AuthController aggiungendo questo:

public function getLogout() 
{ 
    $this->auth->logout(); 

    return redirect('logout'); 
} 
+0

Sì, quello è stato il mio primo tentativo. Funziona, ma ho pensato che ci fosse un modo migliore per farlo. Grazie! – kururin

2

Se non si fornisce l'attributo $redirectAfterLogout, verrà utilizzato il valore predefinito '/'.

Questa logica può essere trovato in questa classe: \vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php

public function logout() 
{ 
    Auth::guard($this->getGuard())->logout(); 

    return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/'); 
} 

Detto questo, è sufficiente aggiungere questo attributo nel AuthController:

protected $redirectAfterLogout = '/afterRedirectURL'; 
0

In App \ Controller \ Auth \ AuthController, aggiungere le seguenti due variabili.

protected $redirectTo = '/private_dashboard'; 
protected $redirectAfterLogout = '/public_homepage'; 

Si ottiene l'idea.

0

Ho lo stesso problema in Laravel 5.0. Sostituire un metodo fa il trucco.

1) Vai app/HTTP/Controller/Aut/AuthController.php 2) Aggiungere un nuovo metodo:

// Override Logout method (define custom url) 
public function getLogout() 
{ 
    $this->auth->logout(); 
    return redirect('auth/login'); // Your Custom URL 
} 
-1

it'only laravel versi 5,4 se si desidera personalizzato URL di reindirizzamento logout, aperto /your-project-laravel/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php e modificare reindirizzamento basato su voi bisogno

public function logout(Request $request) 
    { 
     $this->guard()->logout(); 

     $request->session()->flush(); 

     $request->session()->regenerate(); 

     return redirect('/login'); 
    } 
+0

I file del fornitore non devono essere impegnati o modificati. Questo si interromperà sul tuo prossimo aggiornamento del compositore. –

+0

In realtà è la funzione corretta, ma il file sbagliato, in L5.4, dovresti sovrascrivere questo metodo su Http/Controllers/Auth/LoginController.php – CheeHow

0

Aggiungi questo al vostro itinerario

Rout e :: get ('logout', function() { Auth :: logout(); return redirect ('/');/Aggiunta questa riga. L'auth non sembra funzionare da solo/ });

0

Per Laravel 5.5 override metodo di logout in LoginController. Nel mio caso sto reindirizzando verso home route dopo il login.

/** 
* Log the user out of the application. 
* 
* @param \Illuminate\Http\Request $request 
* @return \Illuminate\Http\Response 
*/ 
public function logout(Request $request) 
{ 
    $this->guard()->logout(); 
    $request->session()->invalidate(); 

    return redirect()->route('home'); 
} 
Problemi correlati