You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 13中为未登录游戏用户生成唯一UserToken追踪进度

追踪未登录用户的Token实现方案

1. 生成唯一会话Token

当用户首次进行猜电影操作时,在后端生成一个**UUID(通用唯一识别码)**作为会话Token。UUID的唯一性足够满足需求,几乎不会出现重复。

  • 后端代码示例(Node.js):
const { v4: uuidv4 } = require('uuid');
const userToken = uuidv4(); // 生成类似 "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed" 的Token

2. 绑定Token与游戏数据

将生成的Token作为标识,与用户的游戏记录(剩余尝试次数、线索进度等)绑定后存入数据库。确保每个Token对应唯一的游戏会话,且数据保留时长匹配你的需求(比如数日)。

3. 客户端持久化Token

为了让用户刷新页面、重启浏览器后仍能恢复会话,需要把Token存储在客户端的Cookie或localStorage中:

  • 使用Cookie:设置与游戏数据保留时长一致的过期时间,同时开启HttpOnly和Secure属性提升安全性:
// 后端设置Cookie示例(Node.js/Express)
res.cookie('game_session_token', userToken, {
  maxAge: 7 * 24 * 60 * 60 * 1000, // 保留7天
  httpOnly: true,
  secure: process.env.NODE_ENV === 'production',
  sameSite: 'Strict'
});
  • 使用localStorage:若不需要后端自动携带Token,可在前端存储,但需注意防范XSS攻击:
// 前端存储Token
localStorage.setItem('game_session_token', userToken);

4. 会话恢复逻辑

用户再次访问页面时,前端先检查Cookie或localStorage中是否存在Token:

  • 若存在,将Token发送给后端,后端通过Token查询数据库并返回对应的游戏记录;
  • 若不存在,判定为新用户,等待首次操作时生成新Token。

5. 关键注意事项

  • Token安全性:不要在Token中存储敏感数据,所有游戏数据仅保留在后端;定期清理过期的Token及对应游戏数据,避免数据库冗余。
  • 跨标签页同步:若用户打开多个标签页,可利用localStorage的storage事件同步会话状态,确保各标签页游戏记录一致。
  • 设备识别的局限性:纯前端的设备指纹方案易被篡改或随浏览器更新失效,Token+客户端存储的方案更稳定,完全能满足你的需求。

内容的提问来源于stack exchange,提问作者Abdullah moiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:23:33