检查JWT到期是否足以授权用户?

时间:2017-09-25 20:48:02

标签: angular django-rest-framework jwt django-rest-framework-jwt

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

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

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

1 个答案:

答案 0 :(得分:0)

您的客户端应用程序(Angular App)确实无法验证JWT,也无法解码JWT并检查到期日期。

你的Angular App应该:

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

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

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

  • 令牌已过期
  • 签名验证失败
  • 段数无效