我正在使用 Node.JS/Express.JS 构建一个网站,该网站将允许用户使用第 3 方提供商(通过 OAuth1.0a 的 Discogs)登录。
我已经成功实现了身份验证过程,以便用户授予对他们的 Discogs 帐户的访问权限,并且我会返回一个访问令牌以供将来的 API 调用使用。访问令牌不会过期。该用户被 Discogs 归类为“经过身份验证的应用程序”。
目前我将访问令牌存储在会话中,即使用户重新启动浏览器或我的服务器重新启动,该会话仍然存在,因此用户保持登录状态。太好了。
但是,当我通过销毁他们的会话来注销用户并且他们重复身份验证过程时,第 3 方提供商将用户视为新授权的应用程序,而将旧的授权应用程序留在后面。我怎样才能解决这个问题?最好不要在注销时破坏用户的会话,而是存储用户的登录状态?Discogs 不提供取消身份验证的方法。
此外,一旦用户登录,就有一些配置要针对用户设置。我应该为此创建一个专用的数据库表或等效的,还是将其存储在会话中就足够了?似乎专用的用户表可能是多余的,因为我依靠用户的会话 ID 来识别它们。