То, что вы действительно хотите, это:
id:[some_int],
session_token:[some_hash]
Маркер сеанса создается только на сервере и является просто ключом поиска ... важно, в сочетании с user_id.Он хранится в базе данных с датой истечения срока действия.По истечении этого срока вам потребуется новый логин.Вы можете установить время ожидания в любое время ... изменить способ генерации ключей и т. Д. Вы также можете использовать различные классификации токенов аутентификации с разными таймаутами и т. Д.
При загрузке страницы вы используете идентификатори токен сеанса в виде запросов к таблице сеансов, обычно с выбором ярости даты (в зависимости от бизнес-правил входа в систему).Если все совпадает, ты в порядке.Для дополнительной запутанности вы можете использовать часть пользовательского агента.
То, как вы генерируете токен, не имеет значения в этом случае ... MD5 (mktime ()) так же хорош, как и все остальное.
Единственное время, когда вам нужно беспокоиться о готовых форматах, - это auth_tokens, которые можно использовать для преодоления разрыва API между приложениями и вашим веб-сервисом (не похоже, что вам нужно беспокоиться об этом).*
Пример поток обнаружения входа в систему:
<?php
session_start();
if (array_key_exists('auth_user', $_SESSION))
{
// user already has a session.
}
elseif (array_key_exists('session_token', $_COOKIE))
{
$sql = 'SELECT *
FROM sessions
LEFT JOIN users USING (user_id)
WHERE sessions.user_id = %d
AND sessions.token = \'%s\'
AND [ some date argument ]
LIMIT 1';
// execute SQL. If you get a user back, great. Set up a session.
if (!empty($user))
{
$_SESSION['auth_user'] = $user;
}
}
else
{
// Not logged in. Do what you want here (like show a login UI).
}
Ваш код авторизации должен создать токен, поместить его в БД и установить cookie.