gpt4 book ai didi

authentication - JWT 认证概念

转载 作者:行者123 更新时间:2023-12-04 06:40:07 24 4
gpt4 key购买 nike

我目前正在使用基于 JSON Web token 的身份验证在 Angular JS 应用程序和 Node.js 服务器(作为 API)之间进行交互。

但是我有一个我自己无法回答的问题:当您对 JWT 服务器端将用户作为有效负载进行编码时,您如何继续在客户端检索用户信息?
这是一个理解我的问题的小例子:

我是一个基本用户,我将我的凭据发送到 API 进行身份验证。作为交换,我收到了一个 JWT token ,但我没有关于用户的任何信息,因为只有服务器拥有能够解码 JWT token 的 key 。那么服务器是否需要向我发送例如用户的 id 以便我可以调用我的 api user/id 来检索有关经过身份验证的用户的信息?

最佳答案

您可以通过解码每个请求的 token 来检索用户的信息。因此,在您的示例中,在将 token 返回给客户端之后,客户端向服务器发出请求,以使用存储在编码 token 中的数据获取用户的名字和姓氏,该数据与请求一起发送回服务器。发出此 GET 请求时,您可以将 token 作为参数发送。我将使用一个非 cookie 存储示例。这是它的下降方式:

  • 用户使用他们的密码和用户名登录
  • 服务器对包含使用 secret_key 登录的用户的唯一标识符(即 user_id)的 json Web token 负载进行编码。示例函数调用可能看起来像这样。

  • 有效载荷 = {user_id: 35}
    user_token = JWT.encode(payload, "your_secret_key");
  • 将 user_token 返回给客户端并将所述 token 存储在隐藏的 html 标签或 localStorage 变量中。使用 Angular,我会将它存储在 localStorage 中。
  • 现在用户已登录且 token 位于客户端,您可以提交包含 user_token 作为参数的 GET 请求。请记住,这个 user_token 负载包含 user_id。
  • 服务器获取参数并解码 user_token 以从有效负载中获取 user_id。
  • 您使用 user_id 查询数据库并将数据(名字和姓氏)作为纯 json 返回,未编码。

  • 重要的是要记住在您的示例中唯一要编码的是唯一标识符 (user_id)。在每个请求中,您都对 token 进行解码, token 本身就是身份验证机制。

    关于authentication - JWT 认证概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25392562/

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