如何使用auth0-js传递其他信息(登录后重定向用户)

pel*_*lea 0 javascript reactjs auth0

我想将用户重定向到登录工作流程之前他所在的当前页面。

  1. 用户想要转到/ profile
  2. 页面受保护;用户被重定向到/ login
  3. 使用重定向到/ callback的auth0-js登录工作流程
  4. 我希望回调页面将用户重定向到/ profile页面

是否有可能将其他信息传递给auth0-js(例如{from: '/profile'})?

这是我在React应用程序中对Auth0-js的初始化:

auth0 = new auth0.WebAuth({
        domain: 'xxx.auth0.com',
        clientID: 'xxx',
        redirectUri: 'http://localhost:3000/callback',
        audience: 'https://xxx.auth0.com/userinfo',
        responseType: 'token id_token',
        scope: 'openid profile offline_access'
    });
Run Code Online (Sandbox Code Playgroud)

要记录用户:

auth0.authorize();
Run Code Online (Sandbox Code Playgroud)

如果不将信息存储在localStorage中,我找不到方法。

Shr*_*low 5

披露:我为Auth0工作。

您的应用程序不应在回调中接受任意参数,并使用它来重定向用户。我建议将信息存储在localStorage中,并使用诸如的唯一哈希引用它state

例如

const state = getRandomBytes(32); // Assume that  this method will give you 32 bytes

localStorage[state] = { pathToGotoAfterAuth: '/somepath' };

auth0.authorize({
   state: state
});


// Then later
const authResult = auth0.parseHash();
const state = authResult.state;
const olderAppState = localStorage[state];
localStorage.remove(state);
redirect(olderAppState.pathToGotoAfterAuth);
Run Code Online (Sandbox Code Playgroud)

然后在回调时,您将收到此状态,然后您的应用程序可以使用存储的版本执行必要的操作。

这具有几个优点,例如

  • 抵御CSRF攻击。
  • 如果您想将来还原更多数据,这是微不足道的。