Как хранить разные (случайные и временные) данные для каждого пользователя без входа в систему?

Какой самый простой способ сохранить небольшие внутренние данные для каждого пользователя?

Я работаю над программой, которая будет делать случайный выбор для каждого пользователя, строку из одного слова, и я только начинаю решать, как ее спроектировать. Хотя выбор является случайным, я хочу, чтобы он был постоянным - не обязательно, если пользователь возвращается на следующий день, но, по крайней мере, через сеанс, который может занять 20 минут. Это было бы совершенно тривиально для внешнего интерфейса, но случайный выбор должен происходить на внутреннем узле узла (потому что пользователь не может знать, что это такое) и не может измениться, когда он делает свой следующий запрос. Для этих целей мы предполагаем, что пользователь достаточно технически грамотен, чтобы просматривать исходные или открытые инструменты разработки, но не заботится о том, чтобы кто-то взломал.

Я уже знаю, как хранить данные в базе данных (Mongo или SQL), но это кажется излишним для одного слова. Я уже знаю, как войти в систему пользователей, используя user/password или OAuth, но это опять-таки кажется излишним, потому что данные на самом деле не являются частными и не должны требовать входа в систему. Кроме того, это дополнительная проблема для пользователя. Я рассматриваю возможность использования Firebase для аутентификации анонимных пользователей, но мне интересно, есть ли более простой / быстрый способ для моего бэкэнда определить, с каким пользователем с низким уровнем безопасности я имею дело, просто взаимодействовать с одним словом для первого пользователя, и другое слово для второго пользователя.

Должен ли я использовать Firebase для входа анонимного пользователя? Есть ли что-то простое, о чем я не думал? Спасибо!

1 ответ

Решение

Вы, наверное, ищете что-то вроде Set-Cookie HTTP заголовок. Например, если вы используете модуль узла http:

var http = require('http')
var cookie = require('cookie') // npm install if you need to

// Server set up code
const server = http.createServer((request, response) => {
    //Gets called on each http request to your server

    var randomString = yourRandomStringGenerator();
    var cookies = cookie.parse(request.headers.cookie);
    if (cookies.myCookie) {
        // already there, do nothing
    } else {
        response.setHeader('Set-Cookie',`myCookie=${randomString}`)
    }
    // Your other server routing etc.
}

Этот заголовок также принимает Max-Age а также Expires параметр, если вы хотите, чтобы они продолжались за один сеанс, но если Expires не устанавливается, тогда cookie автоматически является cookie сессии. Смотрите документацию по Set-Cookie в MDN

Другие вопросы по тегам