Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Виды аутентификации в онлайн сервисах и аутентификация в Laravel, Тесты с ответами для самопроверки

Лекция Тесты



Другие правильно ответили на 47% вопросов

Аутентификация — это один из ключевых механизмов любого современного веб-приложения. Она отвечает за проверку личности пользователя и контроль доступа к ресурсам. В Laravel аутентификация реализована как гибкая и расширяемая система, которая сочетает в себе работу сессий и куки, а также дополнительные механизмы вроде токенов для API.

Теоретические сведения

Виды аунтеритификации в онлайн сервисах

  • Session — хранится в cookie браузера
  • JWT Token — токен содержит данные пользователя
  • API Token — токен хранится в БД
  • Bearer Token — передается в Authorization header
  • OAuth2 — access token от OAuth сервера
  • Basic Auth — логин/пароль в header
  • Signed URL — временная подписанная ссылка
  • Magic Link — вход по email ссылке
  • SSO Session — единый вход между сервисами
  • External IdP — внешний провайдер (Google и т.д.)
  • Personal Token — персональный токен пользователя
  • SPA Cookie — cookie авторизация для SPA

таблица сравнения способов аутентификации:

Название Принцип работы Плюсы и минусы Когда использовать
Session
  • пользователь логинится
  • Laravel создает запись в session storage
  • браузер получает cookie laravel_session
  • каждый запрос отправляет cookie обратно

Плюсы

  • Просто,
  • встроено в Laravel,
  • безопасно

Минусы

  • Stateful,
  • плохо подходит для API

Классические

web-приложения (Blade)

JWT Token без

шифрования.

  • сервер выдает JWT
  • в токене payload: user id, exp и т.д.
  • сервер не хранит состояние
  • проверяется подпись
  • payload → base64url (это кодирование, не шифрование)
  • signature → защита от изменения

Плюсы

  • Stateless,
  • хорошо масштабируется
  • удобно для API
  • нет затрат времени на шифрование

Минусы

  • сложно отзывать токены
  • payload видим (но подписан)
  • payload не должен содержать секреты

REST API,

мобильные приложения

с шифрованием

JWE (JSON Web Encryption)

  • сервер создает JWT и шифрует payload
  • данные недоступны без расшифровки
  • используется публичный/симметричный ключ
  • получатель расшифровывает токен
  • структура: header.encryptedKey.iv.ciphertext.tag

Плюсы

  • payload скрыт
  • можно передавать чувствительные данные
  • защита от чтения на клиенте
  • подходит для межсервисного обмена

Минусы

  • сложнее реализация
  • медленнее из-за шифрования
  • сложнее дебажить
  • редко поддерживается «из коробки»

Микросервисы,

чувствительные данные,

межсерверная коммуникация,

high-security API

API Token

Токен хранится в базе и проверяется на каждом запросе

  • создается токен
  • сохраняется в БД
  • клиент отправляет токен
  • Laravel ищет в БД

Плюсы

  • Можно отзывать,
  • простой контроль

Минусы

  • Запрос к БД каждый раз

Laravel Sanctum,

API

Bearer Token

Токен передается в заголовке Authorization

Идея: способ передачи токена
Как выглядит:

Authorization: Bearer token_here

Важно:

  • это не тип хранения
  • может быть JWT или API token

Плюсы

  • Универсальный стандарт API

Минусы

  • Только способ передачи,
  • не хранение, форматы разные
Любые API
OAuth2

Внешний сервер выдает access token

  • redirect на provider
  • пользователь логинится
  • provider возвращает code
  • Laravel получает token

Разница для SSO, и для External IdP

Использование Кто выдает токен Цель
SSO ваш auth server

единый

вход между

сервисами

External IdP внешний провайдер

вход через

Google/GitHub

Плюсы

  • Стандарт индустрии
  • безопасно
  • и для SSO, и для External IdP,

Минусы

  • Сложнее настройка

Passport,

внешние сервисы

Basic Auth

Логин и пароль передаются в header

Authorization: Basic base64(login:password)

Плюсы

  • Очень просто

Минусы

  • Небезопасно без HTTPS,
  • пароль отправляется каждый раз
Dev, внутренние API
Signed URL

Подписанная ссылка с временем действия

/unsubscribe?expires=...&signature=...

Laravel:

URL::signedRoute(...)

Плюсы

  • Не нужен логин

Минусы

  • Ограниченные сценарии

email ссылки

Email-подтверждения,

временный доступ

отписка

Magic Link

Вход по ссылке из email

  • ввод email
  • отправка ссылки
  • переход → вход

Плюсы

  • Без пароля, удобно

Минусы

  • Зависимость от почты
Passwordless login

SSO Session

Single Sign-On

Общая сессия между несколькими сервисами

  • ogin на auth server
  • cookie/shared token
  • другие сервисы доверяют

OAuth2 + SSO

  • используется для единого входа
  • один сервер авторизации выдает токен
  • несколько сервисов доверяют этому токену
  • пример: корпоративный портал → CRM → API

Схема:

User → Auth Server → Access Token 
→ Service A / Service B

Плюсы

  • Один вход для всех систем
  • Нет зависимости от внешних провайдеров

Минусы

  • Сложная инфраструктура
  • Если SSO построен через внешний IdP:

  • Google Workspace, Azure AD, Okta,

  • то зависимость есть

  • корпоративные системы
  • Keycloak

External IdP

Identity Provider

Аутентификация через внешний провайдер

Примеры:

  • Google
  • GitHub
  • Microsoft
  • LDAP

OAuth2 + External IdP

  • используется для входа через внешний провайдер
  • IdP = Google / GitHub / Microsoft
  • Laravel получает access token и данные пользователя

Схема:

User → Google (IdP) → 
OAuth2 token → Laravel app

Плюсы

  • Не нужно хранить пароли

Минусы

  • Зависимость от провайдера
  • постоянное обновление
  • возможно взмыние оплаты
  • или блокировка
  • возможно утечка данных

авторизация через

Google, GitHub login и т.д.

в Laravel: с использованием

Socialite

Personal Token

Персональный токен пользователя

Идея: токен конкретного пользователя
Laravel Sanctum:

$user
->createToken('mobile')
->plainTextToken;

Плюсы

  • можно ограничивать scope
  • можно отзывать

Минусы

  • Нужно управлять токенами
API для пользователя
SPA Cookie

Cookie + CSRF для SPA

Как работает:

  • frontend (React/Vue)
  • Sanctum stateful
  • cookie + CSRF

Плюсы

  • Безопаснее JWT,
  • встроено

Минусы

  • Stateful
SPA (Vue, React) + Laravel

OTP Password

одноразовый пароль

  • пользователь вводит логин / email / телефон
  • сервер генерирует одноразовый код
  • код отправляется пользователю по email / SMS / в мессенджер
  • пользователь вводит этот код в форму
  • сервер проверяет код и срок его действия
Плюсы
  • просто для пользователя
  • не нужно помнить постоянный пароль
  • удобно для входа по email или телефону

Минусы
  • зависит от сервера и доставки кода
  • SMS и email могут приходить с задержкой
  • SMS менее безопасен из-за SIM swap и перехвата
  • нужен отдельный канал доставки

Вход без постоянного пароля,

подтверждение входа,

двухфакторная аутентификация,

login by email / phone

Time-based one-time password
Google Authenticator / TOTP
  • сервер и приложение пользователя один раз обмениваются secret key
  • secret сохраняется у сервера и в приложении Authenticator
  • приложение каждые 30 секунд генерирует новый код по времени
  • пользователь вводит код
  • сервер вычисляет такой же код по тому же secret и времени и сравнивает
Плюсы
  • работает оффлайн без SMS и email
  • быстрее и безопаснее обычного SMS OTP
  • не зависит от доставки сообщений
  • подходит для 2FA

Минусы
  • secret все равно хранится на сервере
  • нужно первоначально привязать устройство
  • при потере телефона нужны backup codes / recovery flow
  • возможен небольшой drift по времени

Двухфакторная аутентификация,

защита кабинета, админки,

финансовые и чувствительные аккаунты

Виды аутентификации в онлайн сервисах и аутентификация в Laravel, Тесты с ответами для самопроверки

Зачем нужна аутентификация

  • Безопасность — предотвращает доступ к закрытым разделам сайта посторонним пользователям.
  • Идентификация — позволяет системе "узнать" конкретного пользователя и связать его действия с учетной записью.
  • Персонализация — обеспечивает доступ к индивидуальным настройкам, профилю и истории действий.
  • Контроль доступа — дает возможность разграничивать права пользователей (например, администратор и обычный пользователь).

Роль сессий и куки

  • Сессии — это механизм хранения данных на стороне сервера. После успешного входа Laravel сохраняет информацию о пользователе в сессии, чтобы при каждом запросе не приходилось заново вводить логин и пароль.
  • Куки — это небольшие файлы, которые браузер хранит у себя. В них Laravel записывает идентификатор сессии (session_id), чтобы связать запросы пользователя с его серверной сессией.

Таким образом, куки служат "ключом", а сессия — "замком", который открывает доступ к данным пользователя. Вместе они обеспечивают удобный и безопасный процесс аутентификации.

Особенности реализации в Laravel

  • Использование guards для разных способов аутентификации (web — через сессии, api — через токены).
  • Настройка в файле config/auth.php, где определяются драйверы, провайдеры и политики доступа.
  • Поддержка middleware (auth, guest, verified) для защиты маршрутов.
  • Возможность расширения через пакеты (например, Laravel Sanctum или Passport для API).

В Laravel основные способы аутентификации такие:

  1. Сессионная аутентификация
    Классический вход через email / password для веб-приложений. Laravel использует сессии, cookies, middleware auth, guards и providers. Это стандартный вариант для обычных сайтов и админок.
  2. Стартовые наборы с готовой аутентификацией
    Официальные starter kits (или laravel UI)уже включают готовые login / register / reset password / email verification / profile settings. В актуальной документации Laravel указано, что starter kits используют Fortify внутри.
  3. Laravel Fortify
    Это backend-слой аутентификации без готовой верстки. Дает маршруты и логику для login, registration, reset password, email verification, 2FA и т.д. Подходит, когда UI хочешь сделать сам.
  4. Laravel Sanctum
    Для SPA, mobile apps и простых token-based API. Sanctum умеет работать и как session-based auth для SPA, и как API token auth. Обычно это лучший выбор для большинства современных API без полного OAuth2.
  5. Laravel Passport
    Полная реализация OAuth2 server. Нужен, если у тебя сложная API-аутентификация: access tokens, refresh tokens, third-party clients, OAuth flows. Для обычного проекта часто избыточен по сравнению с Sanctum.
  6. Laravel Socialite
    Вход через внешние провайдеры: Google, GitHub, Facebook, LinkedIn, GitLab, Bitbucket, Slack, X и другие. Используется для social login через OAuth.
  7. HTTP Basic Auth
    Более простой вариант, когда нужно быстро защитить маршрут basic-аутентификацией без полноценной формы входа. Это тоже поддерживается стандартным auth-механизмом Laravel.

Как выбрать на практике:

  • Обычный сайт / админка → session auth + starter kit / Fortify
  • SPA на Vue / React + Laravel backend → чаще Sanctum
  • Публичное API с OAuth2-клиентами → Passport
  • Вход через Google / GitHub → Socialite
  • Нужен только backend без готового UI → Fortify

Практическое задание

В Laravel процесс интеграции аутентификации можно выстроить как последовательность шагов. Вот базовый рабочий сценарий:

1 Установите Laravel Breeze или JetstreamЭти пакеты предоставляют готовые маршруты, контроллеры и шаблоны для аутентификации.
2 Запустите миграции базы данныхВыполните php artisan migrate, чтобы создать таблицы users и связанные структуры.
3 Настройте маршруты аутентификацииLaravel Breeze автоматически добавляет login, register, logout и другие маршруты.
4 Настройте контроллеры и middlewareИспользуйте middleware auth для защиты маршрутов и контроллеров.
5 Настройте представленияОтредактируйте Blade-шаблоны для форм входа, регистрации и сброса пароля.
6 Проверьте процесс входа и выходаУбедитесь, что пользователи могут регистрироваться, входить и выходить из системы.

Шаги создания аутентификации в Laravel без использования сторонинх библиотек

1. Настройка базы данных

  • В файле .env укажите параметры подключения к БД.

  • Выполните миграцию для таблицы пользователей:

    php artisan migrate
    

    По умолчанию создается таблица users с полями name, email, password.

2. Создание маршрутов

В 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');

3. Контроллер аутентификации

Создайте контроллер:

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');
    }
}

4. Формы (Blade-шаблоны)

Пример формы регистрации (resources/views/auth/register.blade.php):

Виды аутентификации в онлайн сервисах и аутентификация в Laravel, Тесты с ответами для самопроверки
 

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

Виды аутентификации в онлайн сервисах и аутентификация в Laravel, Тесты с ответами для самопроверки
 

5. Middleware для защиты маршрутов

В routes/web.php:

Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware('auth');

6. Итог

  • Используется встроенный Auth фасад Laravel.

  • Пароли хэшируются через Hash::make.

  • Сессии управляются автоматически.

  • Никаких сторонних пакетов не требуется.

Тестовое задание

Изучите темы и выполните соотвествующее практическое задание , затем в каждом вопросе теста, выбери один из 4х вариантов вопросов

1. Какой компонент Laravel отвечает за аутентификацию пользователей?

  • A) Middleware
  • B) Auth Facade *
  • C) Blade
  • D) Route

Подсказка: Auth — основной фасад для проверки пользователя.

2. Какой artisan-командой создается базовая система аутентификации?

  • A) php artisan make:auth *
  • B) php artisan auth:install
  • C) php artisan auth:create
  • D) php artisan make:user

Подсказка: В старых версиях Laravel использовалась make:auth.

3. Где Laravel хранит информацию о текущем пользователе?

  • A) В сессии *
  • B) В куках
  • C) В базе данных
  • D) В Blade-шаблонах

Подсказка: После входа данные пользователя сохраняются в сессии.

4. Какой метод проверяет, вошел ли пользователь в систему?

  • A) Auth::check() *
  • B) Auth::login()
  • C) Auth::user()
  • D) Auth::attempt()

Подсказка: check() возвращает true/false.

5. Какой метод используется для входа пользователя по данным формы?

  • A) Auth::login()
  • B) Auth::guard()
  • C) Auth::check()
  • D)Auth::attempt() *

Подсказка: attempt() проверяет email/пароль.

6. Какой guard используется по умолчанию в Laravel?

  • A) api
  • B) web *
  • C) custom
  • D) session

Подсказка: web guard работает через сессии и куки.

7. Где настраиваются guards и providers?

  • A) config/app.php
  • B) config/auth.php *
  • C) routes/web.php
  • D) .env

Подсказка: Все настройки аутентификации в config/auth.php.

8. Какой метод возвращает объект текущего пользователя?

  • A) Auth::id()
  • B) Auth::user() *
  • C) Auth::check()
  • D) Auth::attempt()

Подсказка: user() возвращает модель User.

9. Как выйти из системы?

  • A) Auth::close()
  • B) Auth::exit()
  • C) Auth::destroy()
  • D) Auth::logout() *

Подсказка: logout() очищает данные сессии.

10. Какой middleware защищает маршруты от неавторизованных пользователей?

  • A) guest
  • B) auth *
  • C) verified
  • D) throttle

Подсказка: middleware auth проверяет вход.

11. Какой метод возвращает ID текущего пользователя?

  • A) Auth::check()
  • B) Auth::user()
  • C) Auth::id() *
  • D) Auth::attempt()

Подсказка: id() возвращает числовой идентификатор.

12. Какой класс отвечает за хранение паролей в Laravel?

  • A) Hash *
  • B) Crypt
  • C) Password
  • D) Encrypt

Подсказка: Hash::make() используется для хэширования.

13. Какой метод используется для проверки пароля?

  • A)Hash::verify()
  • B) Auth::check()
  • C) Auth::attempt()
  • D) Hash::check() *

Подсказка: Hash::check() сравнивает введенный пароль с хэшем.

14. Какой middleware проверяет подтверждение email?

  • A) auth
  • B) guest
  • C) verified *
  • D) throttle

Подсказка: verified требует подтвержденный email.

15. Какой метод используется для входа пользователя вручную?

  • A) Auth::check()
  • B) Auth::attempt()
  • C) Auth::login() *
  • D) Auth::user()

Подсказка: login() принимает объект User.

16. Какой класс по умолчанию используется для модели пользователя?

  • A) Admin
  • B) User *
  • C) Account
  • D) Profile

Подсказка: Laravel создает модель User при установке.

17. Какой метод используется для входа пользователя по его ID?

  • A) Auth::login()
  • B) Auth::loginUsingId() *
  • C) Auth::attempt()
  • D) Auth::user()

Подсказка: loginUsingId() позволяет авторизовать без пароля.

18. Какой middleware запрещает доступ авторизованным пользователям?

  • A) throttle
  • B) auth
  • C) verified
  • D) guest *

Подсказка: guest используется для страниц входа и регистрации.

19. Какой метод используется для запоминания пользователя между сессиями?

  • A) Auth::remember()
  • B) Auth::attempt(['remember' => true]) *
  • C) Auth::keep()
  • D) Auth::session()

Подсказка: remember работает через флаг в attempt().

20. Какой файл отвечает за настройку политики доступа (Policies)?

  • A) config/auth.php
  • B) AuthServiceProvider.php *
  • C) routes/web.php
  • D) Kernel.php

Подсказка: AuthServiceProvider регистрирует политики.

21. Какой guard чаще всего используется для API?

  • A) web
  • B) api *
  • C) session
  • D) token

Подсказка: api guard работает без сессий, через токены.

22. Какой метод используется для авторизации через модель User напрямую?

  • A) Auth::check($user)
  • B) Auth::attempt($user)
  • C) Auth::login($user) *
  • D) Auth::user($user)

Подсказка: login() принимает объект модели User.

23. Какой метод возвращает true, если пользователь гость?

  • A) Auth::guest() *
  • B) Auth::check()
  • C) Auth::user()
  • D) Auth::id()

Подсказка: guest() противоположен check().

24. Какой middleware ограничивает количество запросов для защиты от brute force?

  • A) auth
  • B) guest
  • C) throttle *
  • D) verified

Подсказка: throttle ограничивает частоту запросов.

25. Какой метод используется для проверки, авторизован ли пользователь через конкретный guard?

  • A) Auth::attempt('web')
  • B) Auth::user('web')
  • C) Auth::guard('web')->check() *
  • D) Auth::login('web')

Подсказка: check() работает внутри выбранного guard.

26. Какой метод возвращает текущий guard?

  • A) Auth::guard() *
  • B) Auth::get()
  • C) Auth::current()
  • D) Auth::session()

Подсказка: guard() позволяет переключаться между web и api.

27. Какой middleware используется для защиты API маршрутов?

  • A) auth:api *
  • B) api:auth
  • C) guest:api
  • D) throttle:api

Подсказка: auth:api проверяет токен или guard API.

28. Какой метод используется для временной аутентификации пользователя?

  • A) Auth::once() *
  • B) Auth::login()
  • C) Auth::attempt()
  • D) Auth::guest()

Подсказка: once() авторизует только на один запрос.

29. Какой метод используется для входа пользователя без сохранения в сессии?

  • A) Auth::onceUsingId() *
  • B) Auth::loginUsingId()
  • C) Auth::attempt()
  • D) Auth::check()

Подсказка: onceUsingId() работает только для текущего запроса.

30. Какой класс отвечает за сброс пароля?

  • A) Hash Manager
  • B) Password Broker *
  • C) Auth Provider
  • D) Session Manager

Подсказка: Password Broker управляет токенами сброса пароля.

31. Какой метод используется для отправки ссылки на сброс пароля?

  • A) Password::sendResetLink() *
  • B) Auth::reset()
  • C) User::resetPassword()
  • D) Mail::reset()

Подсказка: sendResetLink() генерирует email с токеном.

32. Какой метод используется для фактического сброса пароля?

  • A) Password::reset() *
  • B) Auth::reset()
  • C) User::updatePassword()
  • D) Hash::reset()

Подсказка: reset() принимает callback для обновления пароля.

33. Какой метод используется для проверки email при регистрации?

  • A) MustVerifyEmail интерфейс *
  • B) Auth::verify()
  • C) User::confirm()
  • D) Email::check()

Подсказка: модель User должна реализовать MustVerifyEmail.

34. Какой middleware используется для проверки подтверждения email?

  • A) throttle
  • B) auth
  • C) guest
  • D) verified *

Подсказка: verified блокирует доступ без подтвержденного email.

35. Какой метод используется для получения токена API?

  • A) $user->createToken('token') *
  • B) Auth::token()
  • C) User::getToken()
  • D) Auth::apiToken()

Подсказка: createToken() используется в Laravel Sanctum/Passport.

36. Какой пакет Laravel чаще всего используется для API аутентификации?

  • A) Sanctum *
  • B) Horizon
  • C) Telescope
  • D) Scout

Подсказка: Sanctum обеспечивает простую токен-аутентификацию.

37. Какой метод используется для проверки токена в Sanctum?

  • A) User::verifyToken()
  • B) Auth::token()
  • C) Auth::check()
  • D) $request->user() *

Подсказка: user() возвращает модель пользователя по токену.

38. Какой метод используется для удаления токена в Sanctum?

  • A) $user->tokens()->delete() *
  • B) Auth::logout()
  • C) Auth::removeToken()
  • D) User::clearToken()

Подсказка: tokens()->delete() очищает все токены пользователя.

39. Какой файл отвечает за настройку драйверов аутентификации?

  • A) config/session.php
  • B) config/auth.php *
  • C) config/app.php
  • D) config/database.php

Подсказка: guards и providers настраиваются в config/auth.php.

40. Какой guard используется для проверки токенов API?

  • A) web
  • B) api *
  • C) session
  • D) token

Подсказка: api guard работает без сессий, через токены.

41. Какой метод используется для входа пользователя по ID?

  • A) Auth::loginUsingId($id) *
  • B) Auth::attemptId($id)
  • C) Auth::userId($id)
  • D) Auth::checkId($id)

Подсказка: loginUsingId() авторизует без пароля.

42. Какой метод используется для временной аутентификации без сохранения в сессии?

  • A) Auth::once() *
  • B) Auth::login()
  • C) Auth::attempt()
  • D) Auth::guest()

Подсказка: once() работает только для текущего запроса.

43. Какой метод используется для временной аутентификации по ID?

  • A) Auth::onceUsingId($id) *
  • B) Auth::loginUsingId($id)
  • C) Auth::attemptId($id)
  • D) Auth::checkId($id)

Подсказка: onceUsingId() авторизует только на один запрос.

44. Какой метод используется для входа пользователя с опцией "Запомнить меня"?

  • A) Auth::attempt(['email' => $email, 'password' => $password, 'remember' => true]) *
  • B) Auth::loginRemember()
  • C) Auth::keep()
  • D) Auth::sessionRemember()

Подсказка: remember работает через флаг в attempt().

45. Для чего Laravel использует сессии при аутентификации?

  • A) Для хранения паролей
  • B) Для хранения данных текущего пользователя *
  • C) Для хранения шаблонов Blade
  • D) Для хранения миграций

Подсказка: после входа данные пользователя сохраняются в сессии.

46. Где Laravel хранит идентификатор сессии?

  • A) В базе данных
  • B) В cookie браузера *
  • C) В Blade-шаблоне
  • D) В config/app.php

Подсказка: cookie содержит session_id для связи сессии и пользователя.

47. Какой middleware отвечает за запуск сессии?

  • A) VerifyCsrfToken
  • B) Auth
  • C) Kernel
  • D) StartSession *

Подсказка: StartSession инициализирует работу сессий.

48. Какой метод возвращает все данные текущей сессии?

  • A) session()->all() *
  • B) Auth::all()
  • C) Cookie::all()
  • D) User::session()

Подсказка: session() — глобальный хелпер для работы с сессией.

49. Какой метод используется для получения значения из сессии?

  • A) User::session('key')
  • B) Auth::get('key')
  • C) Cookie::get('key')
  • D) session('key') *

Подсказка: session('key') возвращает значение по ключу.

50. Какой метод используется для записи значения в сессию?

  • A) session(['key' => 'value']) *
  • B) Auth::put('key','value')
  • C) Cookie::set('key','value')
  • D) User::session('key','value')

Подсказка: session() принимает массив для записи.

51. Какой метод используется для удаления значения из сессии?

  • A) session()->forget('key') *
  • B) session()->remove('key')
  • C) Auth::forget('key')
  • D) Cookie::forget('key')

Подсказка: forget() удаляет значение по ключу.

52. Какой метод используется для очистки всей сессии?

  • A) Cookie::flush()
  • B) session()->clear()
  • C) Auth::flush()
  • D) session()->flush() *

Подсказка: flush() удаляет все данные сессии.

53. Для чего нужны куки в механизме аутентификации?

  • A) Для хранения HTML
  • B) Для хранения session_id *
  • C) Для хранения Blade-шаблонов
  • D) Для хранения миграций

Подсказка: куки связывают браузер и серверную сессию.

54. Какой метод используется для установки cookie в Laravel?

  • A) Cookie::create()
  • B) Cookie::set()
  • C) Cookie::make() *
  • D) Cookie::new()

Подсказка: make() создает новый cookie-объект.

55. Какой метод используется для получения cookie?

  • A) Cookie::session('name')
  • B) Cookie::read('name')
  • C) Cookie::get('name') *
  • D) Cookie::value('name')

Подсказка: get() возвращает значение cookie по имени.

56. Какой метод используется для удаления cookie?

  • A) Cookie::forget('name') *
  • B) Cookie::remove('name')
  • C) Cookie::delete('name')
  • D) Cookie::clear('name')

Подсказка: forget() удаляет cookie.

57. Какой параметр cookie отвечает за срок его действия?

  • A) duration
  • B) time
  • C) expire *
  • D) lifetime

Подсказка: expire задает время жизни cookie.

58. Какой параметр cookie отвечает за доступ только через HTTPS?

  • A) ssl
  • B) httpOnly
  • C) secure *
  • D) safe

Подсказка: secure=true делает cookie доступным только по HTTPS.

59. Какой параметр cookie запрещает доступ к нему через JavaScript?

  • A) httpOnly *
  • B) secure
  • C) hidden
  • D) private

Подсказка: httpOnly защищает cookie от XSS-атак.

60. Что такое JWT?

  • A) Компактный формат токена для передачи данных между клиентом и сервером *
  • B) Специальный алгоритм шифрования базы данных
  • C) Протокол для передачи файлов по сети
  • D) Система управления сессиями в браузере

Подсказка: JWT расшифровывается как JSON Web Token и состоит из заголовка, полезной нагрузки и подписи.

Виды аутентификации в онлайн сервисах и аутентификация в Laravel, Тесты с ответами для самопроверки

61. Чем отличается JWT от классической аунтеритификации по сессии?

  • A) Сессия работает только в мобильных приложениях
  • B) JWT хранится на сервере и не требует хранения состояния на клиенте
  • C) JWT хранится на клиенте и не требует хранения состояния на сервере *
  • D) JWT нельзя использовать в браузере

Подсказка: при сессиях сервер хранит состояние, а JWT — самодостаточный токен.

Виды аутентификации в онлайн сервисах и аутентификация в Laravel, Тесты с ответами для самопроверки

62. Что является ключевым преимуществом JWT?

  • A) Шифрование куки ключа на стороне клиента
  • B) Автоматическая генерация паролей
  • C) Возможность хранить данные прямо внутри токена *
  • D) Ускорение загрузки сайта

Подсказка: полезно для передачи claims без обращения к серверу.

63. В чем слабость аунтеритификации по сессии по сравнению с JWT?

  • A)Не может использовать куки
  • B) Не поддерживает HTTPS
  • C) Требует хранения состояния на сервере (только в файлах)
  • D) Требует хранения состояния на сервере (в файлах или в БД)*

Подсказка: масштабирование сессий требует распределенного хранилища.

64. Чем OAuth2 отличается от OAuth1?

  • A) OAuth2 работает только с XML O
  • B)Auth2 использует токены доступа и refresh токены, а не подписи каждого запроса *
  • C) OAuth1 всегда быстрее OAuth2
  • D) OAuth2 не поддерживает браузеры

Подсказка: OAuth1 требует криптографической подписи каждого запроса, а OAuth2 упростил модель через bearer токены и refresh‑механизм.

Виды аутентификации в онлайн сервисах и аутентификация в Laravel, Тесты с ответами для самопроверки

65. Как OAuth1 отличается от JWT?

  • A) OAuth1 использует подписи для каждого запроса *
  • B) OAuth1 хранит токен в localStorage
  • C) JWT всегда требует HTTPS
  • D) JWT не может быть подписан

Подсказка: OAuth1 сложнее из-за необходимости подписывать каждый запрос.

66. Что общего у JWT и OAuth2?

  • A) Оба из коробки поддерживаются всеми современными браузерами и не требуют установки дополнительных пакетов
  • B) Оба требуют куки
  • C) Оба используют подписи RSA только
  • D) Оба могут использовать Bearer токены *

Подсказка: в заголовке Authorization часто встречается слово Bearer.

Виды аутентификации в онлайн сервисах и аутентификация в Laravel, Тесты с ответами для самопроверки

67. Чем JWT удобнее OAuth1?

  • A) JWT автоматически обновляет пароль
  • B) JWT всегда работает быстрее интернета
  • C) JWT проще использовать, так как не требует подписи каждого запроса *
  • D) JWT не может быть украден

Подсказка: подпись каждого запроса в OAuth1 делает его громоздким.

68. Как обновляется доступ при использовании OAuth2?

  • A) Через автоматическую смену IP
  • B) Через куки браузера
  • C) Через refresh token *
  • D) Через JWT без срока действия

Подсказка: refresh token позволяет получить новый access token.

69. Что хранит JWT внутри себя?

  • A) Только пароль пользователя
  • B) Только IP-адрес клиента
  • C) Только время жизни сервера
  • D) Заголовок, полезную нагрузку и подпись *

Подсказка: структура токена состоит из трех частей.

70. В чем отличие OAuth2 от авторизации по сессии?

  • A) OAuth2 позволяет делегировать доступ сторонним приложениям *
  • B) OAuth2 всегда хранит данные в куках
  • C) Сессия работает только с API
  • D) OAuth2 не поддерживает HTTPS

Подсказка: OAuth2 часто используется для входа через Google или Facebook.

71. Какой недостаток JWT по сравнению с сессиями?

  • A) При компрометации токена злоумышленник имеет полный доступ до истечения срока действия *
  • B) JWT нельзя использовать в мобильных приложениях
  • C) JWT всегда требует базу данных
  • D) JWT не может быть подписан

Подсказка: сервер не может отозвать токен до его истечения без дополнительных механизмов.

72. Какие пакеты (вендоры) Laravel обычно подключают для работы с сессиями, базовой авторизацией, OAuth2 и JWT?

  • A) Laravel/ui или Breeze для сессий и базовой авторизации, Passport для OAuth2, tymon/jwt-auth для JWT *
  • B) Только Laravel/ui для всех вариантов
  • C) Composer сам автоматически подключает все нужные пакеты
  • D) JWT встроен в ядро Laravel и не требует пакета

Подсказка: Laravel имеет встроенную поддержку сессий и базовой аутентификации, но для OAuth2 используют Passport, а для JWT — отдельный пакет, например tymon/jwt-auth.

73. Можно ли использовать OAuth2 без HTTPS?

  • A) Нет, OAuth2 встроенно запрещает работу без HTTPS
  • B) Да, это стандартный режим работы
  • C) Теоретически можно, но это крайне небезопасно *
  • D) Только если использовать JWT без подписи

Подсказка: спецификация OAuth2 допускает работу без HTTPS, но это открывает возможность перехвата токенов, поэтому на практике всегда рекомендуется использовать защищенное соединение.

74. Для чего нужны два токена в OAuth2 (access и refresh)?

  • A) Access token используется для доступа к ресурсам, а refresh token — для обновления доступа *
  • B) Access token хранит пароль, а refresh token — логин
  • C) Access token нужен только для браузеров, а refresh token — для мобильных приложений
  • D) Access token всегда бессрочный, а refresh token ограничивает время жизни сервера

Подсказка: access token имеет ограниченный срок действия, а refresh token позволяет безопасно получить новый access token без повторного ввода пароля.

75. Почему в OAuth2 нельзя объединить access token и refresh token в один?

  • A)Потому что их генерируют разные стороны межсетевого взаимодействия один сервером, другой - клиентом
  • B) Потому что спецификация запрещает использовать один токен и нужно использовать эти два токена различными
  • C) Потому что браузеры не поддерживают один токен
  • D) Потому что разделение повышает безопасность: access токен короткоживущий, а refresh хранится дольше *

Подсказка: если бы был только один токен, его компрометация давала бы злоумышленнику долгосрочный доступ. Разделение позволяет ограничить риски: access токен быстро истекает, а refresh токен используется только для обновления.

76. Кто из участников сетевого взаимодействия генерирует access token и refresh token в OAuth2?

  • A) Refresh token всегда создается браузером, а сервер создает access token
  • B) Серверная сторона генерирует access token, Refresh token создается клиентской стороной
  • C) Серверная сторона генерирует оба токена, клиент получает их для использования *
  • D) Клиентская сторона генерирует access token, Refresh token создается серверной стороной

Подсказка: клиент не имеет права сам создавать токены — он получает их от авторизационного сервера, который отвечает за безопасность и срок действия.

См. также

создано: 2026-04-03
обновлено: 2026-04-06
0



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:
Пожаловаться

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Фреймворки. Famworks ( программная платформа)

Термины: Фреймворки. Famworks ( программная платформа)