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

Express中动态设置Auth0 BaseURL的问题与解决方法

动态设置Auth0 BaseURL解决Lambda部署问题

问题场景

应用部署至Lambda函数后才能获取BaseURL,且该函数URL由Terraform在Lambda创建后生成,无法提前将其设为环境变量传入Express应用。

尝试过程

尝试通过请求动态设置Auth0配置中的baseurl,虽已在setAuth0BaseURL中间件中设置值,但因异步问题,配置块读取时该值为undefined,不知如何调整。

原尝试代码

const setAuth0BaseURL = (req: Request, res: Response, next: NextFunction) => {
  const baseURL = `${req.protocol}://${req.get("host")}`;
  process.env.AUTH0_BASE_URL = `${baseURL}/callback`;
  next();
};

app.use(setAuth0BaseURL);

if (!process.env.LOCAL) {
const auth0Config = {
  authRequired: true,
  auth0Logout: true,
  baseURL: process.env.AUTH0_BASE_URL || "http://localhost:3000",
  clientID: process.env.AUTH0_CLIENTID || "dummyid",
  issuerBaseURL:
    process.env.AUTH0_ISSUER_BASE_URL || "http://COMPANY_AUTH0_URL",
  secret: process.env.AUTH0_SECRET || "dummysecret",
};
// Mount the auth middleware
app.use(auth(auth0Config));
}

解决方案

基于Mirco的建议,最终可行的实现代码如下:

const setConfig = (req: Request, res: Response, next: NextFunction) =>
  auth({
    authRequired: true,
    auth0Logout: true,
    baseURL: `${req.protocol}://${req.get("host")}`,
    clientID: process.env.AUTH0_CLIENTID || "dummyid",
    issuerBaseURL:
      process.env.AUTH0_ISSUER_BASE_URL || "http://COMPANY_AUTH0_URL",
    secret: process.env.AUTH0_SECRET || "dummysecret",
  })(req, res, next);

app.use(setConfig);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:43:19