Лекция Тесты
Аутентификация — это один из ключевых механизмов любого современного веб-приложения. Она отвечает за проверку личности пользователя и контроль доступа к ресурсам. В Laravel аутентификация реализована как гибкая и расширяемая система, которая сочетает в себе работу сессий и куки, а также дополнительные механизмы вроде токенов для API.
Виды аунтеритификации в онлайн сервисах
таблица сравнения способов аутентификации:
| Название | Принцип работы | Плюсы и минусы | Когда использовать | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Session |
|
Плюсы
Минусы
|
Классические web-приложения (Blade) |
|||||||||
|
JWT Token без шифрования.
|
|
Плюсы
Минусы
|
REST API, мобильные приложения |
|||||||||
|
с шифрованием JWE (JSON Web Encryption) |
|
Плюсы
Минусы
|
Микросервисы, чувствительные данные, межсерверная коммуникация, high-security API |
|||||||||
| API Token |
Токен хранится в базе и проверяется на каждом запросе
|
Плюсы
Минусы
|
Laravel Sanctum, API |
|||||||||
| Bearer Token |
Токен передается в заголовке Authorization Идея: способ передачи токена Authorization: Bearer token_here Важно:
|
Плюсы
Минусы
|
Любые API | |||||||||
| OAuth2 |
Внешний сервер выдает access token
Разница для SSO, и для External IdP
|
Плюсы
Минусы
|
Passport, внешние сервисы |
|||||||||
| Basic Auth |
Логин и пароль передаются в header
Authorization: Basic base64(login:password) |
Плюсы
Минусы
|
Dev, внутренние API | |||||||||
| Signed URL |
Подписанная ссылка с временем действия /unsubscribe?expires=...&signature=... Laravel: URL::signedRoute(...) |
Плюсы
Минусы
|
email ссылки Email-подтверждения, временный доступ отписка |
|||||||||
| Magic Link |
Вход по ссылке из email
|
Плюсы
Минусы
|
Passwordless login | |||||||||
|
SSO Session Single Sign-On |
Общая сессия между несколькими сервисами
OAuth2 + SSO
Схема: User → Auth Server → Access Token → Service A / Service B |
Плюсы
Минусы
|
|
|||||||||
|
External IdP Identity Provider |
Аутентификация через внешний провайдер Примеры:
OAuth2 + External IdP
Схема: User → Google (IdP) → OAuth2 token → Laravel app |
Плюсы
Минусы
|
авторизация через Google, GitHub login и т.д. в Laravel: с использованием Socialite |
|||||||||
| Personal Token |
Персональный токен пользователя Идея: токен конкретного пользователя
$user
->createToken('mobile')
->plainTextToken;
|
Плюсы
Минусы
|
API для пользователя | |||||||||
| SPA Cookie |
Cookie + CSRF для SPA Как работает:
|
Плюсы
Минусы
|
SPA (Vue, React) + Laravel | |||||||||
|
OTP Password одноразовый пароль |
|
Плюсы
Минусы
|
Вход без постоянного пароля, подтверждение входа, двухфакторная аутентификация, login by email / phone |
|||||||||
| Time-based one-time password Google Authenticator / TOTP |
|
Плюсы
Минусы
|
Двухфакторная аутентификация, защита кабинета, админки, финансовые и чувствительные аккаунты |

Таким образом, куки служат "ключом", а сессия — "замком", который открывает доступ к данным пользователя. Вместе они обеспечивают удобный и безопасный процесс аутентификации.
В Laravel основные способы аутентификации такие:
Как выбрать на практике:
В Laravel процесс интеграции аутентификации можно выстроить как последовательность шагов. Вот базовый рабочий сценарий:
В файле .env укажите параметры подключения к БД.
Выполните миграцию для таблицы пользователей:
php artisan migrate
По умолчанию создается таблица users с полями name, email, password.
В routes/web.php добавьте маршруты для регистрации, входа и выхода:
use App\Http\Controllers\AuthController;
Route::get('/register', [AuthController::class, 'showRegisterForm']);
Route::post('/register', [AuthController::class, 'register']);
Route::get('/login', [AuthController::class, 'showLoginForm']);
Route::post('/login', [AuthController::class, 'login']);
Route::post('/logout', [AuthController::class, 'logout'])->middleware('auth');
Создайте контроллер:
php artisan make:controller AuthController
Пример методов:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use App\Models\User;
class AuthController extends Controller
{
public function showRegisterForm() {
return view('auth.register');
}
public function register(Request $request) {
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:6|confirmed',
]);
User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
return redirect('/login')->with('success', 'Регистрация на intellect.icu прошла успешно!');
}
public function showLoginForm() {
return view('auth.login');
}
public function login(Request $request) {
$credentials = $request->validate([
'email' => 'required|email',
'password' => 'required',
]);
if (Auth::attempt($credentials)) {
$request->session()->regenerate();
return redirect()->intended('/dashboard');
}
return back()->withErrors([
'email' => 'Неверные учетные данные.',
]);
}
public function logout(Request $request) {
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}
Пример формы регистрации (resources/views/auth/register.blade.php):

Пример формы входа (resources/views/auth/login.blade.php):

В routes/web.php:
Route::get('/dashboard', function () {
return view('dashboard');
})->middleware('auth');
Используется встроенный Auth фасад Laravel.
Пароли хэшируются через Hash::make.
Сессии управляются автоматически.
Никаких сторонних пакетов не требуется.
Изучите темы и выполните соотвествующее практическое задание , затем в каждом вопросе теста, выбери один из 4х вариантов вопросов
1. Какой компонент Laravel отвечает за аутентификацию пользователей?
Подсказка: Auth — основной фасад для проверки пользователя.
2. Какой artisan-командой создается базовая система аутентификации?
Подсказка: В старых версиях Laravel использовалась make:auth.
3. Где Laravel хранит информацию о текущем пользователе?
Подсказка: После входа данные пользователя сохраняются в сессии.
4. Какой метод проверяет, вошел ли пользователь в систему?
Подсказка: check() возвращает true/false.
5. Какой метод используется для входа пользователя по данным формы?
Подсказка: attempt() проверяет email/пароль.
6. Какой guard используется по умолчанию в Laravel?
Подсказка: web guard работает через сессии и куки.
7. Где настраиваются guards и providers?
Подсказка: Все настройки аутентификации в config/auth.php.
8. Какой метод возвращает объект текущего пользователя?
Подсказка: user() возвращает модель User.
9. Как выйти из системы?
Подсказка: logout() очищает данные сессии.
10. Какой middleware защищает маршруты от неавторизованных пользователей?
Подсказка: middleware auth проверяет вход.
11. Какой метод возвращает ID текущего пользователя?
Подсказка: id() возвращает числовой идентификатор.
12. Какой класс отвечает за хранение паролей в Laravel?
Подсказка: Hash::make() используется для хэширования.
13. Какой метод используется для проверки пароля?
Подсказка: Hash::check() сравнивает введенный пароль с хэшем.
14. Какой middleware проверяет подтверждение email?
Подсказка: verified требует подтвержденный email.
15. Какой метод используется для входа пользователя вручную?
Подсказка: login() принимает объект User.
16. Какой класс по умолчанию используется для модели пользователя?
Подсказка: Laravel создает модель User при установке.
17. Какой метод используется для входа пользователя по его ID?
Подсказка: loginUsingId() позволяет авторизовать без пароля.
18. Какой middleware запрещает доступ авторизованным пользователям?
Подсказка: guest используется для страниц входа и регистрации.
19. Какой метод используется для запоминания пользователя между сессиями?
Подсказка: remember работает через флаг в attempt().
20. Какой файл отвечает за настройку политики доступа (Policies)?
Подсказка: AuthServiceProvider регистрирует политики.
21. Какой guard чаще всего используется для API?
Подсказка: api guard работает без сессий, через токены.
22. Какой метод используется для авторизации через модель User напрямую?
Подсказка: login() принимает объект модели User.
23. Какой метод возвращает true, если пользователь гость?
Подсказка: guest() противоположен check().
24. Какой middleware ограничивает количество запросов для защиты от brute force?
Подсказка: throttle ограничивает частоту запросов.
25. Какой метод используется для проверки, авторизован ли пользователь через конкретный guard?
Подсказка: check() работает внутри выбранного guard.
26. Какой метод возвращает текущий guard?
Подсказка: guard() позволяет переключаться между web и api.
27. Какой middleware используется для защиты API маршрутов?
Подсказка: auth:api проверяет токен или guard API.
28. Какой метод используется для временной аутентификации пользователя?
Подсказка: once() авторизует только на один запрос.
29. Какой метод используется для входа пользователя без сохранения в сессии?
Подсказка: onceUsingId() работает только для текущего запроса.
30. Какой класс отвечает за сброс пароля?
Подсказка: Password Broker управляет токенами сброса пароля.
31. Какой метод используется для отправки ссылки на сброс пароля?
Подсказка: sendResetLink() генерирует email с токеном.
32. Какой метод используется для фактического сброса пароля?
Подсказка: reset() принимает callback для обновления пароля.
33. Какой метод используется для проверки email при регистрации?
Подсказка: модель User должна реализовать MustVerifyEmail.
34. Какой middleware используется для проверки подтверждения email?
Подсказка: verified блокирует доступ без подтвержденного email.
35. Какой метод используется для получения токена API?
Подсказка: createToken() используется в Laravel Sanctum/Passport.
36. Какой пакет Laravel чаще всего используется для API аутентификации?
Подсказка: Sanctum обеспечивает простую токен-аутентификацию.
37. Какой метод используется для проверки токена в Sanctum?
Подсказка: user() возвращает модель пользователя по токену.
38. Какой метод используется для удаления токена в Sanctum?
Подсказка: tokens()->delete() очищает все токены пользователя.
39. Какой файл отвечает за настройку драйверов аутентификации?
Подсказка: guards и providers настраиваются в config/auth.php.
40. Какой guard используется для проверки токенов API?
Подсказка: api guard работает без сессий, через токены.
41. Какой метод используется для входа пользователя по ID?
Подсказка: loginUsingId() авторизует без пароля.
42. Какой метод используется для временной аутентификации без сохранения в сессии?
Подсказка: once() работает только для текущего запроса.
43. Какой метод используется для временной аутентификации по ID?
Подсказка: onceUsingId() авторизует только на один запрос.
44. Какой метод используется для входа пользователя с опцией "Запомнить меня"?
Подсказка: remember работает через флаг в attempt().
45. Для чего Laravel использует сессии при аутентификации?
Подсказка: после входа данные пользователя сохраняются в сессии.
46. Где Laravel хранит идентификатор сессии?
Подсказка: cookie содержит session_id для связи сессии и пользователя.
47. Какой middleware отвечает за запуск сессии?
Подсказка: StartSession инициализирует работу сессий.
48. Какой метод возвращает все данные текущей сессии?
Подсказка: session() — глобальный хелпер для работы с сессией.
49. Какой метод используется для получения значения из сессии?
Подсказка: session('key') возвращает значение по ключу.
50. Какой метод используется для записи значения в сессию?
Подсказка: session() принимает массив для записи.
51. Какой метод используется для удаления значения из сессии?
Подсказка: forget() удаляет значение по ключу.
52. Какой метод используется для очистки всей сессии?
Подсказка: flush() удаляет все данные сессии.
53. Для чего нужны куки в механизме аутентификации?
Подсказка: куки связывают браузер и серверную сессию.
54. Какой метод используется для установки cookie в Laravel?
Подсказка: make() создает новый cookie-объект.
55. Какой метод используется для получения cookie?
Подсказка: get() возвращает значение cookie по имени.
56. Какой метод используется для удаления cookie?
Подсказка: forget() удаляет cookie.
57. Какой параметр cookie отвечает за срок его действия?
Подсказка: expire задает время жизни cookie.
58. Какой параметр cookie отвечает за доступ только через HTTPS?
Подсказка: secure=true делает cookie доступным только по HTTPS.
59. Какой параметр cookie запрещает доступ к нему через JavaScript?
Подсказка: httpOnly защищает cookie от XSS-атак.
60. Что такое JWT?
Подсказка: JWT расшифровывается как JSON Web Token и состоит из заголовка, полезной нагрузки и подписи.

61. Чем отличается JWT от классической аунтеритификации по сессии?
Подсказка: при сессиях сервер хранит состояние, а JWT — самодостаточный токен.

62. Что является ключевым преимуществом JWT?
Подсказка: полезно для передачи claims без обращения к серверу.
63. В чем слабость аунтеритификации по сессии по сравнению с JWT?
Подсказка: масштабирование сессий требует распределенного хранилища.
64. Чем OAuth2 отличается от OAuth1?
Подсказка: OAuth1 требует криптографической подписи каждого запроса, а OAuth2 упростил модель через bearer токены и refresh‑механизм.

65. Как OAuth1 отличается от JWT?
Подсказка: OAuth1 сложнее из-за необходимости подписывать каждый запрос.
66. Что общего у JWT и OAuth2?
Подсказка: в заголовке Authorization часто встречается слово Bearer.

67. Чем JWT удобнее OAuth1?
Подсказка: подпись каждого запроса в OAuth1 делает его громоздким.
68. Как обновляется доступ при использовании OAuth2?
Подсказка: refresh token позволяет получить новый access token.
69. Что хранит JWT внутри себя?
Подсказка: структура токена состоит из трех частей.
70. В чем отличие OAuth2 от авторизации по сессии?
Подсказка: OAuth2 часто используется для входа через Google или Facebook.
71. Какой недостаток JWT по сравнению с сессиями?
Подсказка: сервер не может отозвать токен до его истечения без дополнительных механизмов.
72. Какие пакеты (вендоры) Laravel обычно подключают для работы с сессиями, базовой авторизацией, OAuth2 и JWT?
Подсказка: Laravel имеет встроенную поддержку сессий и базовой аутентификации, но для OAuth2 используют Passport, а для JWT — отдельный пакет, например tymon/jwt-auth.
73. Можно ли использовать OAuth2 без HTTPS?
Подсказка: спецификация OAuth2 допускает работу без HTTPS, но это открывает возможность перехвата токенов, поэтому на практике всегда рекомендуется использовать защищенное соединение.
74. Для чего нужны два токена в OAuth2 (access и refresh)?
Подсказка: access token имеет ограниченный срок действия, а refresh token позволяет безопасно получить новый access token без повторного ввода пароля.
75. Почему в OAuth2 нельзя объединить access token и refresh token в один?
Подсказка: если бы был только один токен, его компрометация давала бы злоумышленнику долгосрочный доступ. Разделение позволяет ограничить риски: access токен быстро истекает, а refresh токен используется только для обновления.
76. Кто из участников сетевого взаимодействия генерирует access token и refresh token в OAuth2?
Подсказка: клиент не имеет права сам создавать токены — он получает их от авторизационного сервера, который отвечает за безопасность и срок действия.
Комментарии
Оставить комментарий
Фреймворки. Famworks ( программная платформа)
Термины: Фреймворки. Famworks ( программная платформа)