【问题标题】:Django Rest JWT authentication - refresh tokenDjango Rest JWT 身份验证 - 刷新令牌
【发布时间】:2019-02-27 21:01:09
【问题描述】:

我的 Django REST 应用程序和 JWT 身份验证模块 (https://jpadilla.github.io/django-rest-framework-jwt) 在刷新令牌阶段出现问题。

刷新令牌的默认逻辑是non-expired tokens can be "refreshed" to obtain a brand new token with renewed expiration time。过期时间设置为 BE。

JWT 框架为刷新令牌提供了一个 API,您应该使用它来获取新令牌,因此过期时间会重置 Web 应用程序上的每个“用户操作”。 这意味着每次从我的 Angular6 SPA 调用 BE 都必须重置令牌的过期时间。

我想到了三种方法:

1) FE 对 BE 的每次调用都必须回调 api 来刷新 token。这意味着呼叫次数总是重复的。 不优雅!

2) 根据算法(在 FE 中)调用 api 刷新令牌,以避免重复调用。 哪种算法?

3) 将令牌的过期时间重置为后端每次来自 FE 的调用,并使用来自 FE 的相同令牌。 我不能这样做!

有什么建议吗?

谢谢

【问题讨论】:

    标签: django angular algorithm authentication jwt


    【解决方案1】:

    您不需要在每次 api 调用时刷新您的令牌。距离到期只有几分钟。大多数令牌都包含到期时间。因此,您需要在每次快要到期时刷新它。像这样的东西:token.expiration - curenttime =< 5 minutes

    我相信有些图书馆可以为您做到这一点。也许Auth0

    【讨论】:

    • 使用这种方法,“会话”永不过期。如果浏览器选项卡在没有任何用户操作的情况下打开,则会话“永远”处于活动状态。这是一个正确的工作吗?
    • 我认为这没有问题。但是,如果您这样做,您可以编写一些简单的东西来在不活动后删除令牌。
    猜你喜欢
    • 2020-07-07
    • 1970-01-01
    • 2017-12-29
    • 2021-05-22
    • 2020-09-12
    • 2017-11-08
    • 2021-09-25
    • 2018-12-15
    • 2023-03-16
    相关资源
    最近更新 更多