You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

react-adal令牌自动刷新及有效期配置问题求助

解决方案

首先明确:react-adal没有提供直接配置令牌有效期的客户端属性,因为令牌的有效期由你的身份提供商(此处为Azure AD)决定,默认access_token和id_token有效期均为1小时,客户端无法通过配置修改该值。不过可以通过两种方式满足你的需求:

1. 利用react-adal内置的自动刷新机制

react-adal的AuthenticationContext自带令牌自动刷新逻辑,只要你通过它提供的acquireToken方法获取令牌(而非直接读取缓存),当令牌即将过期时,它会自动尝试静默刷新令牌(前提是用户会话仍有效,未关闭浏览器或退出登录)。

示例:封装令牌获取函数

// 封装获取API令牌的函数
export const getApiToken = () => {
  return new Promise((resolve, reject) => {
    // 此处的api对应你在adalConfig.endpoints中配置的资源名称
    authContext.acquireToken(authContext.config.endpoints.api, (error, token) => {
      if (error) {
        reject(error);
      } else {
        resolve(token);
      }
    });
  });
};

之后调用API时,使用该函数获取令牌,而非直接读取缓存:

// API调用示例
async function fetchData() {
  try {
    const token = await getApiToken();
    const response = await fetch('/api/data', {
      headers: {
        'Authorization': `Bearer ${token}`
      }
    });
    const data = await response.json();
    // 处理返回数据
  } catch (err) {
    // 处理错误,例如跳转至登录页
    authContext.login();
  }
}

2. 在Azure AD中调整令牌生命周期(最长24小时)

如果需要令牌有效期最长达1天(24小时),可在Azure门户的应用注册中配置令牌生命周期:

  • 登录Azure门户,找到你的应用注册
  • 进入令牌配置选项
  • 添加新的令牌策略,将access_token的有效期设置为24小时(这是Azure AD允许的最大值)

注意:该配置为全局设置,会影响所有使用该应用注册的客户端。


内容的提问来源于stack exchange,提问作者yogesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:45:43