gpt4 book ai didi

angularjs - Angular 中 token 验证的最佳方式

转载 作者:行者123 更新时间:2023-12-02 01:03:42 27 4
gpt4 key购买 nike

在使用 token 验证进行身份验证的 AngularJS 的 WebApp 开发中,进行此验证的最佳方法是什么?例如:

  • 每次路由转换时验证 token 。为此,每次我想验证时,我都必须进行休息。
  • 仅验证一次 token ,休息一次,然后将 token 存储在本地存储中。 ( token 本身只有一个 bool 值,告诉它是否经过身份验证)

  • 我担心的是不要在每个路由事务中都进行休息调用,我不想消耗那么多的 http 流量。但是,如果没有其他方法,我会这样做。

    最佳答案

    如果我们看看什么是 JSON Web Token (JWT) 是(尽管您不是专门指 JWT,而只是指“ token ”),您会意识到,一旦获得 JWT,您就无需每次在客户端应用程序中进行转换时都对其进行验证( Angular )。这是因为 JWT 通常是经过签名的,因此服务器可以确保发件人(在本例中为 Angular 应用程序)是他们在发出请求时所说的身份。

    您需要做的是在每次尝试使用资源时将 header 中的每个请求的 JWT 发送到 API 服务器。服务器负责检查您发送的 JWT 是否有效,并为该请求分配适当的权限以访问资源。

    结语 (并回答您的问题)

    1.Validate the Token every time I have a route transition. For this I have to make a rest call for every time I want to validate.



    不,这是没用的,因为给定的 token 已经被服务器签名了。如果 token 在客户端以任何方式被操纵,资源服务器将知道它并以正确的 HTTP 状态代码(通常为 a 401 HTTP Status)进行响应。

    您可以做的是,万一服务器以 401 响应,您可以使用 Refresh Token (如果服务器提供它)以获得新的访问 token 并在每个请求中再次使用它。这样,最终用户将永远不会知道幕后发生了什么(并且不会再次看到登录表单),因为您不会再向他/她询问用户名和密码。

    2.Validate the token just one time, with one rest call, and then store the token in local storage. (The token itself just have a boolean telling if it is authenticated or not)



    这是一种正确的方法(并且被大多数人使用),这样您就不会因不必要的请求而使流量过载。实际上,当您获得访问 token 时,您不需要对其进行验证,因为正如我之前所说, token 本身是自包含的(它包含有关用户的所有必需信息以及 token 提供者认为重要的其他必要数据)。

    如果我是你,我会阅读很多关于此的内容,因为除了任何回答者可以在 SO 上的单个答案中汇总的内容之外,还有更多要了解的内容(我放了一些指向我使用过的资源的链接,这些链接描述得很好这些主题)。

    请记住,所有这些行为都可以根据您的需要进行修改,并非所有行为都必须像我刚刚描述的那样。我只是举了一些例子来说明它可能是怎样的。

    下图将为您提供有关我刚刚描述的所有这些问题的大图。

    Authentication Secuence

    关于angularjs - Angular 中 token 验证的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48989302/

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