javascript - 存储经过身份验证的登录名的好方法是什么?
问题描述
如果您的网站允许异地登录(通过 Google、Steam 等登录),那么存储回调结果(例如 Steam ID)的最佳方式是什么,以便您“记住”他们已登录。此外,什么是最安全的方法来做到这一点,所以没有人可以“假”登录?
例如,我有一个用户通过 Steam 登录我的网站。我得到了他们的 Steam ID(一个很大的数字),然后将其存储在他们的 cookie/会话中作为他们的“登录”,直到它过期。
有没有更好的方法,更安全的方法?
解决方案
通常这些类型的身份验证使用 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 视频。
我希望这有帮助。
推荐阅读
- javascript - 如何使用循环在导航列表中创建链接?
- php - 如何在php中将数组合并/推送为一个
- angular - 使用 childrouts:错误错误:未捕获(承诺):错误:无法匹配任何路由。网址段
- flutter - 在 For 循环中更改图标类型
- ios - 在 SwiftUI 视图中设置高度的问题
- python - 在带有自定义 train_step 的 keras 中使用 model.fit 时出错
- c# - 复选框控件在设计器中和调试时均未显示
- react-native - 为什么有些导入包含别名和子文件夹?
- python - 单键检测与添加长输入的可能性一起工作
- machine-learning - 在某些迭代后成本变为 NaN