В общем, файл cookie, хранящийся с клиентом, представляет собой только длинную, труднодоступную хэш-строку кода, которая может использоваться в качестве ключа в базе данных. На стороне сервера у вас есть таблица, сопоставляющая эти хэши сессии с первичными ключами (хэш сеанса должен никогда не быть первичным ключом) и отметки времени истечения срока действия.
Поэтому, когда вы получаете запрос, первое, что вы делаете, - это поиск файла cookie. Если его нет, создайте запись сеанса (cookie + время истечения срока действия) в таблице базы данных. Если он есть, найдите его и убедитесь, что он не истек; если он есть, создайте новый. В любом случае, если вы создали новый файл cookie, вы можете передать этот факт до более позднего кода, чтобы он знал, нужно ли ему запрашивать логин или что-то еще. Если вам не нужно было создавать новый файл cookie, установите временную метку истечения срока действия, чтобы вы не закончили сессию слишком рано.
При обработке кода представления и генерировании ответа вы можете использовать первичный ключ этого сеанса для индексации в другие таблицы, у которых есть данные, связанные с сеансом. Наконец, в ответе, отправленном обратно клиенту, установите cookie в хэш-код сеанса.
Если у кого-то есть файлы cookie отключены, то их cookie-сессия всегда будет новой, и любые функции, основанные на сеансе, не будут работать.
Описание в деталях. Спасибо! – Determinant