В таком варианте, как Вы привели - используется обычно для защиты от примитивных спам-ботов.
Но правильно: токен должен привязываться к клиентскому устройству (браузеру) и иметь время устаревания, после которого его необходимо обновлять (с сервера, автоматически, через JS).
Токен удостоверяет пользователя вместе с устройством после успешного логона в течение всего времени действия сессии (если не произошло исключающих событий: параллельный вход, блокировка сессии со стороны сервера, неудачное авто-обновление/обмен токена и т.д.).
Если произошло закрытие сессии - пользователю пишется сообщение о том, что он должен предпринять, чтобы восстановить доступ.
Если токен и куки сессии будут похищены и повторно использованы на другом клиенте (или с другим IP), то это не поможет злоумышленнику войти в вашу учётную запись, т.к. его клиентское устройство ("отпечаток") будет уже другим: "чужим" для этого токена.
Javascript-бибилотека
fingerprint2.js позволяет получить ID-клиента.