如何实现Steam OAuth 2.0登录?steam-login包登录后会自动入库用户吗?
答案
这套使用steam-login包的示例代码不会在Steam授权登录完成后自动将用户信息写入数据库。
具体原因:
steam-login包本身仅负责处理Steam OpenID授权的全流程,没有内置任何数据库操作逻辑。授权验证通过后,它只会把Steam返回的用户信息挂载到请求对象的req.user属性上,同时把登录状态存储到你配置的express-session会话中——默认配置下express-session的会话数据是存在服务器内存里的,服务重启后数据就会全部丢失,完全不会涉及持久化存储。- 你给出的示例代码全程没有引入任何数据库依赖、也没有编写数据库连接、写入的相关逻辑。登录回调的
/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
相关产品推荐
相关产品推荐

