如何将用户信息从前端传递到后端

时间:2019-11-05 14:20:23

标签: vue.js axios nuxt.js auth0

我有一个用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);

    });

1 个答案:

答案 0 :(得分:1)

您可以在访问令牌中添加额外信息(在custom claim中),然后在发出请求时后端就可以使用。

另一种策略是利用/userinfo endpoint来请求用户个人资料,尽管这将需要后端的额外呼叫。

这里要权衡的是具有自定义声明的令牌的增加与/ userinfo端点的额外API调用。