Метод regenerateToken
Метод regenerateToken класса Session применяется для генерации нового CSRF-токена в текущей сессии. Он автоматически обновляет значение токена, хранящееся в сессии, и возвращает сгенерированную строку. Метод полезен при входе, выходе пользователя или в других сценариях, где требуется сбросить токен безопасности.
Синтаксис
<?php
$token = session()->regenerateToken();
?>
Пример
Давайте обновим CSRF-токен в текущей сессии и выведем новое значение:
<?php
$oldToken = session()->token();
$newToken = session()->regenerateToken();
echo "Old token: " . $oldToken . "\n";
echo "New token: " . $newToken;
?>
Результат выполнения кода:
"Old token: jUdU3qL... (some string)"
"New token: sMzE0nP... (some string)"
Пример
Рассмотрим использование метода при выходе пользователя из системы в контроллере:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LogoutController extends Controller
{
public function __invoke(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/');
}
}
?>
Пример
Использование метода в Blade-шаблоне для получения нового токена и передачи его в форму:
<form method="POST" action="/update-profile">
@csrf
<input type="hidden" name="token" value="{{ session()->regenerateToken() }}">
<button type="submit">Update profile</button>
</form>
Смотрите также
-
метод
token,
который возвращает текущий CSRF-токен -
метод
regenerate,
который обновляет ID сессии -
метод
invalidate,
который очищает все данные сессии -
метод
flash,
который сохраняет данные в сессии на один запрос