我有一个用Nuxt.js编写的Ruby on Rails后端API和前端应用程序,与Auth0集成用于身份验证,而Axios则用于API通信。
身份验证工作正常,但是前端不会将用户信息传递给后端。仅user_id和Authorization Bearer令牌,而不包括电子邮件,名称和其他属性。但是,这些属性在前端身份验证后可用,并且在Vuex存储中已保存/可用。
如何告诉前端(Axios)在每个后端的API请求中都包含其他用户属性?是否有任何语法可以访问Vuex存储并在nuxt.config.js中定义全局Axios属性,或者有更简单的方法来做到这一点?
Nuxt.config.js
auth: {
redirect: {
login: '/auth/login',
callback: '/auth/callback'
},
strategies: {
auth0: {
domain: config.AUTH.DOMAIN,
client_id: config.AUTH.CLIENT_ID,
audience: config.AUTH.AUDIENCE
}
}
}
示例请求后端并将结果保存到Vuex商店
this.$axios.get('/organizations/4/projects')
.then(response => {
this.setProjects(response.data.projects);
})
.catch(error => {
console.log(error);
});
答案 0 :(得分:1)
您可以在访问令牌中添加额外信息(在custom claim中),然后在发出请求时后端就可以使用。
另一种策略是利用/userinfo endpoint来请求用户个人资料,尽管这将需要后端的额外呼叫。
这里要权衡的是具有自定义声明的令牌的增加与/ userinfo端点的额外API调用。