Конечно, cookie сделает это.
Подумайте об основах. В любом случае состояние сеанса управляется файлами cookie.
Вот что вы делаете.
Когда они входят в систему, вы берете их ИД пользователя и время ожидания (таким образом, вход в систему длится, скажем, 30 минут или что-то еще).
Возьми эту строку и хэшируй.
(Java, не важно)
String cookie = userid + ":" + timeString + ":" + md5(userid + ":" + timeString + ":" + "secretpassword");
Затем, когда запрос попадает на ваш сайт, проверьте cookie. Сначала проверьте его на целостность.
String parts[] = cookie.split(":");
String newHash = md5(parts[0] + ":" + parts[1] + ":" + "secret password");
if (!newHash.equals(parts[2])) {
// boom, cheater!
}
Затем проверьте строку времени, чтобы убедиться, что они все еще "вошли в систему", и перейдите оттуда.
Убедитесь, что у вас есть время, чтобы обновлять куки при каждом запросе.