Как Laravel «понимает» аутентифицирован пользователь или нет?
По каким признакам Laravel определяет, что тот или иной пользователь аутентифицирован (при использовании драйвера session), если Laravel стартует новую сессию для всех пользователей
как аутентифицированных, так и нет, а следовательно отправляет клиенту в куках sessid?
Т.е. сравнивать sessid из запроса клиента с имеющимися на сервере sessid, время жизни которых не вышло - нет смысла. Тогда какой такой таинственных признак аутентифицированости, если не наличие sessid?
Для правильного вопроса надо знать половину ответа
Кука, отправленная клиенту, это всего лишь идентификатор сессии. На сервере с этим идентификатором связано хранилище (по умолчанию - файл для каждой сессии). В этом хранилище содержится связанная с сессией информация, в том числе и статус аутентификации/авторизации пользователя.
Все верно, но загвоздка вот в чем.
Предположим:
Заходит не аутентиф. пользователь.
Ему отправляется responce с кукой с sessid, которая по умолчанию живет 120 мин.
Пользователь хочет войти в личный кабинет. Для этого ему нужно залогинится.
Он логинится, стартуется новая сессия и отправляется responce с кукой с новой sessid, которая тоже живет по умолчанию 120 мин.
Пользователь теперь может попасть с лич. каб. (все последующие запросы передают на сервер "правильную" ssesid).
Я не могу понять почему же не аутентиф. пользователя не может попасть в лич. кабинет, если его запрос ТАКЖЕ СОДЕРЖИТ ssesid, как и запрос аутентиф. пользователя. Возможно есть другой признак аутентифицированности? Или у ларавел есть отдельное хранилище только аутентифицированных ssesid?
что за такое понятия правильный sessid? есть просто sessid у каждого пользователя. к этой sessid привязанный какие то данные которые лежат на сервере - в файлах, в памяти, в бд, как угодно.
у васи sessid - 1, по этому айди находятся данные login = vaso, logged = true;
у неизвестного пользователя sessid - 2, по этому айди находятся данные logged = false;
Большое спасибо за ответы!
Я разобрался. Как отметил @Сергей delphinpro, признак аутентифицирован или нет пользователь находится в самой сессии и имеет ключ login_web_.
Т.е. после аутентификации генерится новая сессия с этим признаком, передается клиенту и если в запросе он есть, то значит пользователь аутентифицирован.