VueJs auh0社交身份验证,如何自定义句柄redicrect

时间:2019-12-10 14:14:24

标签: vue.js auth0

使用VueJs SDK。

我的重定向URL是example.com/callback,在路由内部,我具有回调组件,该组件将用户数据发送到后端,并检查用户是否存在并登录用户,否则创建新用户并从我们的后端应用程序获取jwt。 / p>

接下来是问题,在创建/挂载的周期内,我无法访问auth0Client,因此无法找到用户属性。

this.$auth.auth0Client

我必须做这个黑客

const interval = setInterval(async () => {
    count++;
    if (this.$auth.auth0Client) {
        clearInterval(interval);
        let loggedUser = await this.$auth.auth0Client.getUser();
        if(loggedUser) {
          const email = loggedUser.email;
          const name = loggedUser.name;
          try {
              //backend logic
          } catch(e) {
              console.log(e)
          }
        }
    } else {
        if (count > 80) {
            clearInterval(interval);
        }
      }
}, 100)

我的问题/问题是如何更好地处理此问题,因为这似乎不太合乎逻辑且很好。 我想将经过身份验证的用户数据发送到我们的后端,然后在那里做其余的事情,

Auth0似乎缺少此类用例的详细信息

谢谢

1 个答案:

答案 0 :(得分:1)

我通过使用Vue事件系统解决了自己的问题

this.auth0Client = await createAuth0Client({
    domain: options.domain,
    client_id: options.clientId,
    audience: options.audience,
    redirect_uri: redirectUri,
    responseType: 'token'
  });
  this.$eventBus.$emit('auth0Client',this.auth0Client) // creating event here after auth0Client

在回调组件中处理

 this.$eventBus.$on('auth0Client', async (auth0Client) => { 
  //logic here
 })

别忘了在主js中注册事件总线

 Vue.prototype.$eventBus = new Vue();

希望这会有所帮助