gpt4 book ai didi

node.js - Express.js 的 Restful API 认证和 session 管理

转载 作者:行者123 更新时间:2023-12-04 02:29:33 25 4
gpt4 key购买 nike

我一直在研究 RESTful 身份验证很多,我仍然无法得到一个非常清晰的想法,我该如何设计我的网络架构。我有很多问题没有答案。
我也希望将我的 API 提供给移动设备和网络,并且我使用的是 Express v4。
我不想使用基本身份验证,因为许多帖子都建议作为一种简单的方法,或者我可以使用 Passport 中间件,但我想使用基于 token 的身份验证或类似或更好的东西,并且我想进行身份验证,所以我可以更好地理解,但我不确定如何实现它。
我将在下面简化我的预期身份验证架构:
新用户注册

  • 客户端

  • 将用户名和密码发布到服务器
    (我知道如果你想让连接安全是使用 https 连接,否则我会公开我的凭据,或者除了 https 之外你还有其他选择吗?否则我将需要使用带有时间戳和哈希的公钥和私钥在发送到服务器之前我的凭据?我该怎么做?还有其他更好的选择吗?
  • 服务器端

  • 使用salt密码算法对密码进行哈希,并存储哈希后的密码和salt,然后生成一个token ID并发送给客户端,token ID存储在session中还是使用REDIS数据库?
    使用 session 不是又违反了 REST 吗?但是,如果我不使用 session ,如何存储 token ID 并将其与客户端进行比较?
  • 客户端

  • 既然现在我有了 token ID,我如何在客户端存储?
  • 我应该使用cookie吗?如果是,这会违反 RESTful 吗?我的移动应用程序如何也存储 cookie?
  • 除了cookie,我还有什么其他选择?我想不出任何。

  • 授权API
  • 客户端

  • 现在,我有了 token ID,每次我想向服务器发出请求时,我都会将它放在授权 header 中。
  • 服务器端

  • 当收到请求时,服务器会检查 token API,并将其与 session token 进行比较,如果为真,则请求允许否则拒绝
    这是 Express 应用程序授权的标准方式吗?
    很抱歉发了这么长的帖子,但我觉得我应该真正掌握认证和授权,因为它很重要。我确实希望有人能纠正我对 REST 身份验证的误解并回答我的问题或建议我更好的方法。

    最佳答案

  • 发送通过 https
  • 编码的用户凭据
  • 要在客户端比较 token ,您可以将其保存在映射或与用户 ID 对应的 Redis 存储中,并匹配它以考虑用户已通过身份验证。它不会破坏 Rest 的重要性,就像在 Rest 中一样,授权 token 只是在到期后的 session
  • Express 没有任何特定或标准的授权方法,它只允许您使用后端的任何数据库来执行您的应用程序所需的身份验证和授权
  • 关于node.js - Express.js 的 Restful API 认证和 session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24063248/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com