处理刷新令牌更新:重定向或抛出异常?

问题描述 投票:0回答:1

我正在使用访问和刷新令牌实现身份验证系统。当访问令牌过期时,我使用刷新令牌来获取新的访问令牌。但是,我不确定如何处理刷新令牌本身过期或无效的情况。

  1. 刷新令牌过期/无效时将用户重定向到登录页面。
  2. 抛出异常,客户端逻辑将捕获该异常以启动重新登录过程。

我还听说建议抛出异常,因为它允许客户端和服务器独立发展。

通过重定向处理刷新令牌过期是标准的还是建议的,或者抛出异常被认为是更好的做法? 我很好奇在不同情况下哪种方法更合适

authentication exception oauth-2.0 jwt refresh-token
1个回答
0
投票

通常令牌刷新是在客户端调用 API 时完成的。如果刷新令牌过期,那么您仍然需要在重定向之前完成客户端逻辑来调用 API。

function callApi(): Data | null {
   ...

    // Trigger a login
    location.href = authorizationRequestUri;

    // Complete the API request
    return null;
}

就我个人而言,我更喜欢抛出

LoginRequiredException
而不是像上面那样返回 null,因为它进一步简化了调用堆栈中的代码。请注意,API 请求的代码执行不会在上述重定向后立即完成。然后,错误渲染代码可以忽略该特定异常。

前端客户端通常会布置一棵同时发出 API 请求的视图树。在这种情况下,您应该只执行一次登录重定向。一种选择是等待所有视图尝试其 API 调用,然后,如果一个或多个返回需要登录的结果,协调器只能触发一次登录重定向,如我的这段代码

此类代码可以通过多种方式编写,具体取决于编码偏好。您应该推理出您首选的 API 客户端旅程,它能够灵活地处理到期条件 - 这有点棘手。

© www.soinside.com 2019 - 2024. All rights reserved.