Ho una classe utente composta da due tipi di utenti e che consente a utenti diversi di accedere a pagine diverse.Disconnessione con autenticazione di base HTTP in Laravel
ho creato un filtro come segue
Route::filter('isExpert', function()
{
$userIsExpert = 0;
$userIsLoggedIn = Auth::check();
if ($userIsLoggedIn && Auth::user()->role == 'expert') {
$userIsExpert = 1;
}
Log::info('Logged in: ' . $userIsLoggedIn . ' && Expert: ' . $userIsExpert);
if ($userIsExpert == 0)
{
Log::info('should be logging out now.');
Auth::logout();
return Auth::basic();
}
});
e il routing in questo modo
Route::get('/winners', array('before' => 'isExpert', function()
{
$winners = DB::select('select * from winners');
return View::make('winners.index')->with('winners',$winners);
}));
Il pensiero è questo: Se non è un esperto, sarà il logout e reindirizzare alla pagina di login. Se lo è, continuerà semplicemente. Tuttavia, Auth :: logout(); non disconnette mai l'utente.
Domanda
Perché non è Auth :: il logout() lavoro? Ho provato a posizionarlo ovunque nell'app senza alcun risultato.
applausi
Provare a reindirizzare su un percorso diverso invece di restituire la risposta 'Auth :: basic()'. Tecnicamente il tuo codice dovrebbe funzionare.Puoi anche provare un 'dd (Auth :: check())' dopo aver effettuato il logout per vedere se il logout ha funzionato correttamente. –
Ok. La funzione di reindirizzamento funziona, posso mettere in una vista lì e si spegne. Auth :: logout() non funziona in nessun punto dell'app. Qualche idea, perché? –