首页 > 解决方案 > 存储经过身份验证的登录名的好方法是什么?

问题描述

如果您的网站允许异地登录(通过 Google、Steam 等登录),那么存储回调结果(例如 Steam ID)的最佳方式是什么,以便您“记住”他们已登录。此外,什么是最安全的方法来做到这一点,所以没有人可以“假”登录?

例如,我有一个用户通过 Steam 登录我的网站。我得到了他们的 Steam ID(一个很大的数字),然后将其存储在他们的 cookie/会话中作为他们的“登录”,直到它过期。

有没有更好的方法,更安全的方法?

标签: javascripthtmlopenidsteam

解决方案


通常这些类型的身份验证使用 OAuth2,一旦用户登录了你会得到几个令牌,一个是你用来与身份验证提供者的 API 通信的 access_token,另一个是你可以用来获取新令牌的刷新令牌访问令牌即将到期时的令牌。

访问令牌包含一些用户信息和令牌的到期时间。您可以在此处查看这些令牌以查看其数据:https ://jwt.io/ 在此网站上您还可以找到几个库,您可以使用它们来有问题地读取这些令牌。

您可以将令牌保存在内存中以避免通过将其存储在本地存储或 cookie 中来泄漏它。有关如何刷新或保持会话,请查看此处:https ://hasura.io/blog/best-practices-of-using-jwt-with-graphql

有关此工作流程的更多信息,我建议您选择要集成到您的应用程序中的第一种身份验证类型,并查看他们的 OAuth 文档。

这是 JS OAuth 的 googles 文档,这是我认为您正在寻找的文档: https ://developers.google.com/identity/protocols/oauth2#clientside

我还建议您在开始编码之前观看有关 OAuth2 如何工作以涵盖基础知识的快速 YouTube 视频。

我希望这有帮助。


推荐阅读