Метод logout
Метод logout класса Auth предназначен для завершения сессии аутентифицированного пользователя. При вызове метод очищает все данные аутентификации из сессии, аннулирует текущий сессионный идентификатор и удаляет cookie "remember me", если он был установлен. Метод не принимает никаких параметров и возвращает void.
Синтаксис
<?php
Auth::logout();
?>
Пример
Базовый пример выхода пользователя из системы в контроллере:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller
{
public function logout()
{
Auth::logout();
return redirect('/login');
}
}
?>
Результат выполнения кода:
"Redirect to /login"
Пример
Выход пользователя с очисткой сессии и регенерацией токена для предотвращения атак фиксации сессии:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
class UserController extends Controller
{
public function logout()
{
Auth::logout();
Session::invalidate();
Session::regenerateToken();
return redirect('/');
}
}
?>
Результат выполнения кода:
"Redirect to /"
Пример
Выход пользователя с проверкой, что он действительно аутентифицирован перед вызовом метода:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
class LogoutController extends Controller
{
public function logout()
{
if (Auth::check()) {
Auth::logout();
$res = "User logged out successfully";
} else {
$res = "No user is logged in";
}
echo $res;
return redirect('/');
}
}
?>
Результат выполнения кода для аутентифицированного пользователя:
"User logged out successfully"
Результат выполнения кода для неаутентифицированного пользователя:
"No user is logged in"