2017-10-13 42 views
0

坚持每个用户的小型后端数据最简单的方法是什么?如何为每个用户存储不同的(随机和临时)后端数据,而无需登录?

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

我已经知道如何将数据存储在数据库中(Mongo或SQL),但这似乎是一个单词的矫枉过正。我已经知道如何使用用户/密码或OAuth登录用户,但这又似乎是过度杀伤,因为数据不是真正的私人,并且不应该需要登录。而且,这对用户来说也是一个额外的麻烦。我正在考虑使用Firebase对匿名用户进行身份验证,但我想知道是否有一种更简单/更快的方式来识别我正在处理的低安全性用户的后端,以便与第一位用户的一个词互动,并为第二个用户提供一个不同的词。

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

+1

任何有关用户的['session'(https://github.com/expressjs/session) –

+0

第一个是在我脑海中是一个PRNG,与用户会话ID播种。因此可以再现“随机”选择的顺序。并且不需要存储任何东西。 – Thomas

+3

简单的会话就是您所需要的。使用随机唯一的会话ID设置cookie,将数据存储在您的后端的任何位置,甚至是内存中,并将其与该会话ID相关联。完成。 – deceze

回答

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

相关问题