【问题标题】:How Authorization Token Works?授权令牌如何工作?
【发布时间】:2018-04-04 18:02:09
【问题描述】:

我试图了解令牌系统如何在 Web api 和 Angular JS 之间工作以进行身份​​验证。如果我错了,请纠正我。令牌存储在数据库表中,并在我们的客户端应用程序中手动添加令牌以伴随我们从客户端发出的每个请求。谢谢。

【问题讨论】:

  • 取决于您使用的令牌类型。 Json Web Token (JWT) 现在被广泛使用,这是一个自包含的令牌,其中嵌入了有关用户的基本信息,因此您不必为每个请求去 db。此外,您可以选择要放入其中的任何信息。
  • 我建议你阅读这篇很棒的博客文章,了解如何实现一个简单的基于令牌的身份验证服务器 bitoftech.net/2014/06/01/…

标签: angularjs authentication asp.net-web-api


【解决方案1】:

如果您是 web API 的新手,我可以为您提供 web api 的高级种子项目。

这个项目将帮助您了解代币工作逻辑和许多其他主题,并让您更快地开发应用程序。

Web Api Advance Seed

【讨论】:

    【解决方案2】:

    如今,大多数令牌都是 JSON Web 令牌。 JWT 简介:https://jwt.io/introduction/

    1. 调用应用程序向令牌服务提供一些凭据并请求某些 API 的令牌
    2. 服务生成一个令牌,其中包含一些声明,说明调用者是谁以及他们在 API 上可能拥有的权限
    3. 服务使用数字签名对令牌进行签名(因此无法修改)并将其返回给调用应用
    4. 然后调用应用程序可以将令牌附加到 API 的 AJAX 请求
    5. API 可以通过验证数字签名来验证令牌
    6. 如果令牌有效,API 可以从令牌中的声明中获取调用方信息

    您不需要将令牌存储在服务端的任何位置。签名允许任何服务在没有数据库调用的情况下验证令牌。

    【讨论】:

    • 感谢您的解释。 JWT 是否依赖于我们需要付费的第三方服务器?
    • 不,您可以设置自己的 JWT 服务器,例如身份服务器。
    【解决方案3】:

    正如@dee 所说,这取决于您使用的方法。您正在谈论的方法有以下步骤

    1.向web api发送登录请求

    2.如果成功在服务器端生成一个令牌并将其存储在数据库中并作为响应返回

    3.在客户端将令牌存储在浏览器内存中的某处

    4.使用$http Interceptors拦截每个api请求并将令牌附加到标头假设标头名称为x-access-token

    5.在 api 端创建一些 custom aurization attribute 检查每个请求的 x-access-token 标头,从中获取令牌并在 db 中匹配它

    【讨论】:

      猜你喜欢
      • 2016-05-30
      • 2022-01-24
      • 2021-04-15
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 2018-06-13
      • 2019-02-26
      相关资源
      最近更新 更多