vue.js - VueJs auh0 社交认证,如何自定义处理重定向
问题描述
使用 VueJs 开发工具包。
我的重定向 url 是 example.com/callback,在路由内部我有回调组件,它假设将用户数据发送到后端并检查用户是否存在并登录用户,否则创建新用户并从我们的后端应用程序中取回 jwt。
问题如下,在创建/安装周期内我无法访问 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 似乎缺少此类用例的详细信息
谢谢
解决方案
我通过使用 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();
希望它会有所帮助
推荐阅读
- c - 删除数组中元素的函数是如何工作的?
- python - 如何在 python 3 中将任何正则表达式应用于我的标记文本
- amazon-web-services - 如何从 aws greengrass 中删除现有的 lambda?
- android - KitKat(API 级别 19)TextView 按钮不显示文本
- c# - Not able to upload a Nuget Package
- java - 与数组中的特定元素交互;处理 3
- seedstack - SeedStack,在假装客户端期间进行rest api调用时的代理配置?
- python - wordList - 刽子手游戏
- sql - 查找与所有指定组中的任何值匹配的行
- sql - SQL datetime 对象中时区的正则表达式