如何在Vue / Nuxt插件中使用商店?

时间:2018-05-08 12:17:31

标签: vue.js vuex nuxt.js

我正在编写一个使用后端进行身份验证的nuxt应用程序。我有一个http插件拦截所有的http请求。我需要为所有请求添加一个auth令牌,令牌在商店中。我想知道的是,如何从插件访问商店?

import axios from 'axios';

var api = axios.create({
   baseURL: 'http://127.0.0.1:8000/api/'
});

api.interceptors.request.use(function (config) {
    config.headers = {
        'Authorization': 'Bearer' + **how do access store?**
    }

    return config;
 }, function (error) {
       return Promise.reject(error);
 });

export default api;

由于

1 个答案:

答案 0 :(得分:1)

您可以尝试在插件中使用来自上下文的应用商店。 您的插件需要进行一些更改:

import axios from 'axios';

var api = axios.create({
   baseURL: 'http://127.0.0.1:8000/api/'
});

export default (context, inject) => {
  api.interceptors.request.use(function (config) {
    config.headers = {
        'Authorization': 'Bearer' + context.app.$store.state.your_path_to_token
    }

    return config;
  }, function (error) {
       return Promise.reject(error);
  });

  return api;
}

另一种方法是创建store / index.js文件并将它们导入插件。