我一直在研究 RESTful 身份验证,但我仍然不清楚,该如何设计Web架构。我有许多 Unresolved 问题。
我也希望我的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 进行比较,如果为true,则请求allow else拒绝
    这是Express应用程序授权的标准方法吗?
    对于冗长的帖子,我感到抱歉,但是我觉得我应该真正掌握身份验证和授权,因为它很重要。我确实希望有人可以纠正我对REST身份验证的误解,并回答我的问题或建议我做一个更好的方法。

    最佳答案

  • 发送通过https编码的用户凭证
  • 要在客户端比较 token ,您可以将其保留在 map 中或与用户ID对应的Redis存储中,并对其进行匹配以考虑用户身份验证。它不会杀死Rest的重要性,就像在Rest中一样,授权 token 仅是在
  • 过期之后的 session
  • Express没有任何特定或标准的授权方法,它仅使您可以使用后端的任何数据库来执行应用程序
  • 要求的身份验证和授权

    关于node.js - Express.js的静态API身份验证和 session 管理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24063248/

    10-15 15:49