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

如何实现Steam OAuth 2.0登录?steam-login包登录后会自动入库用户吗?

答案

这套使用steam-login包的示例代码不会在Steam授权登录完成后自动将用户信息写入数据库。

具体原因:

  1. steam-login包本身仅负责处理Steam OpenID授权的全流程,没有内置任何数据库操作逻辑。授权验证通过后,它只会把Steam返回的用户信息挂载到请求对象的req.user属性上,同时把登录状态存储到你配置的express-session会话中——默认配置下express-session的会话数据是存在服务器内存里的,服务重启后数据就会全部丢失,完全不会涉及持久化存储。
  2. 你给出的示例代码全程没有引入任何数据库依赖、也没有编写数据库连接、写入的相关逻辑。登录回调的/verify路由现在仅会把拿到的req.user用户信息直接返回给客户端,没有任何持久化操作。

如果需要把用户信息存储到数据库,你需要自行在/verify路由的回调中添加对应的数据库操作逻辑,参考示例如下:

// 此处的User为你自己定义的数据库用户模型,需提前配置好数据库连接
app.get('/verify', steam.verify(), async function(req, res) {
  // 用Steam返回的唯一用户ID steamid作为匹配标识,不存在则新建用户,存在则更新用户信息
  await User.findOneAndUpdate(
    { steamId: req.user.steamid },
    {
      username: req.user.username,
      avatar: req.user.avatar.medium,
      lastLoginAt: new Date()
    },
    { upsert: true }
  )
  res.redirect('/');
});

内容的提问来源于stack exchange,提问作者Manlaibayar Amgalanbaatar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:45:05