3

我正在学习 Angular,并通过检查令牌是否过期来查看很多用户授权示例。例如,如果用户有一个令牌并且它没有过期,让他访问受保护的根。我不明白,这是作为一个简化的例子显示的,还是真的是通常的做法。从技术上讲,如果我的令牌没有过期但签名无效,我仍然会通过授权的初始阶段并“更接近”受保护的资源。我误解了什么吗?

然后,如果我还在后端使用 Django REST JWT,它允许在服务器端验证令牌。这意味着应该在每个操作上将请求发送到服务器。这不是授权的正确方式还是有其他目的?

一般来说,授权用户或用户操作的正确方法是什么?

4

1 回答 1

0

您的客户端应用程序(Angular App)确实无法验证 JWT,也不应该能够解码 JWT 并检查过期时间。

您的 Angular 应用程序应该:

  • 向 API 发送登录请求
  • 如果请求成功,则接收带有 JWT 令牌的响应
  • 将 JWT 与每个请求一起发送到 API。通常这是通过设置Authorization: Bearer xxxxxxxxxxxxxxx标题来完成的。
  • 服务器/API 必须是对用户进行身份验证的服务器/API,当它收到请求时,它应该检查令牌的有效性。
  • 然后,Angular App 应该检查响应是否有异常,特别是我认为值得一提的是正确处理 401 响应。

类似于 403 Forbidden,但专门用于需要身份验证且已失败或尚未提供身份验证时使用

401 响应可能会返回响应消息,指示身份验证失败的方式和原因,即

  • 令牌已过期
  • 签名验证失败
  • 段数无效
于 2017-10-03T23:55:56.923 回答