如何在不登录的情况下为每个用户存储不同的(随机和临时)后端数据?

时间:2017-10-13 15:37:41

标签: javascript node.js anonymous-users

为每个用户保留小后端数据的最简单方法是什么?

我正在开发一个程序,它将为每个用户做一个随机选择,一个单字符串,我刚刚开始决定如何构建它。虽然选择是随机的,但我希望它们是持久的 - 不一定是第二天用户回来,但至少通过可能是20分钟的会话。这在前端完全是微不足道的,但是随机选择必须在Node后端发生(因为用户不知道它是什么),并且在他们发出下一个请求时不能改变。出于这些目的,我们假设一个用户具有足够的技术知识来查看源代码或开放式开发工具,但不关心有人黑客入侵。

我已经知道如何在数据库(Mongo或SQL)中存储数据,但这对于单个单词来说似乎有些过分。我已经知道如何使用用户/密码或OAuth登录用户,但这似乎有点过分,因为数据不是真正的私有,不应该要求登录。此外,这对用户来说也是一个额外的麻烦。我正在考虑使用Firebase对匿名用户进行身份验证,但我想知道我的后端是否有更简单/更快的方法来识别我正在处理的低安全性用户,只是为了与第一个用户的一个单词进行交互,和第二个用户的不同的词。

我应该使用Firebase匿名用户登录吗?有什么简单的我没想到的吗?谢谢!

1 个答案:

答案 0 :(得分: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-AgeExpires参数,如果您希望它们超过单个会话,但如果未设置Expires,则Cookie会自动成为会话曲奇饼。请参阅MDN

Set-Cookie的文档