我正在为我的网站构建一个扩展的登录/注册区域,其中包括 OpenID、OAuth (Twitter) 和 OAuth 2.0 (Facebook) 登录选项。
一旦用户成功通过身份验证并且我已经将他们的访问令牌存储在我的数据库中并编写了一个将用户链接到他们的登录状态的 cookie,我应该使用什么最佳实践来确定用户的访问令牌仍然有效?似乎必须为对我网站的每个请求调用身份验证提供程序会减慢用户的速度,我无法想象其他网站正在这样做。
我的猜测是我应该存储一个仅对当前浏览器会话有效的 cookie,因此当用户关闭浏览器时该 cookie 将过期,从而强制在下一个请求时生成一个新的访问令牌(以及一个新的 cookie 匹配)。如果用户明确注销,我也会提前使 cookie 过期。
我唯一的问题当然是,例如,如果用户在一个选项卡中打开我的网站,然后他们在另一个选项卡中打开他们的身份验证提供程序并退出该网站,但继续浏览我的网站,他们不会退出我的网站,即使从技术上讲,他们应该能够使用第三方提供商退出。
这是那些“无关紧要”的场景之一,还是我以错误的方式处理整个事情?