Метод regenerate
Метод regenerate класса Session применяется для создания нового идентификатора сессии при сохранении всех данных сессии. Этот метод автоматически генерирует новый уникальный ID сессии, заменяет старый в хранилище и обновляет cookie клиента. Первым параметром метод принимает булево значение $destroy, которое определяет, нужно ли удалять старую сессию. По умолчанию передаётся false, что означает сохранение старых данных.
Синтаксис
<?php
session()->regenerate($destroy = false);
?>
Пример
Давайте перегенерируем идентификатор сессии при входе пользователя в систему:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function login(Request $request)
{
// ... логика аутентификации
session()->regenerate();
return redirect('/dashboard');
}
}
?>
Пример
Давайте перегенерируем идентификатор сессии с удалением старой сессии:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function logout(Request $request)
{
session()->regenerate(true);
return redirect('/login');
}
}
?>
Пример
Давайте используем метод regenerate через фасад Session:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Session;
class ProfileController extends Controller
{
public function update(Request $request)
{
// ... логика обновления профиля
Session::regenerate();
return back();
}
}
?>
Пример
Давайте проверим, изменился ли идентификатор сессии после перегенерации:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SessionController extends Controller
{
public function check(Request $request)
{
$oldId = session()->getId();
session()->regenerate();
$newId = session()->getId();
echo "Old ID: " . $oldId;
echo "New ID: " . $newId;
}
}
?>
Результат выполнения кода:
"Old ID: 8f3d4a6c2b1e9f7d"
"New ID: 5e7f2d1c9b3a4f8e"
Смотрите также
-
метод
get,
который получает значение из сессии -
метод
put,
который сохраняет значение в сессию -
метод
forget,
который удаляет значение из сессии -
метод
invalidate,
который полностью очищает сессию