Не могу использовать куки в файле Store.js - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь изменить использование localStorage на куки, потому что мне нужно работать с поддоменами. Когда я использую этот. $ Cookie.set () или get () в любом файле .vue, я могу использовать его без проблем, но когда я использую в любом файле .js, я получаю следующее:

TypeError: Невозможно прочитать свойство 'set' из неопределенного.

Кстати, я использую vue-cookie.

вот мой файл store.js:

import Vue from "vue";
import Vuex from "vuex";
import axios from "./axios-auth.js";
import globalAxios from "axios";
import router from "./router";
import VueCookie from 'vue-cookie';
Vue.use(VueCookie)
Vue.use(Vuex);

export default new Vuex.Store({
state: {
    token: null,
    userId: null,
    expireIn: null,
    segmentoSelecionado: null,
    codigoTransfSelecionado: null
},
actions: {
login({ commit }, authData) {
      axios
        .post("/auth", {
          username: authData.username,
          password: authData.password,
          returnSecureToken: true
        })
        .then(res => {
          const now = new Date().getTime();
          const expirationDate = new Date(now + 3500000).getTime();
          this.$cookie.set('userToken', res.data.token, {domain: 'subdomain.domain.com'});
          commit("authUser", {
            userToken: this.$cookie.get('userToken'),
          });
        .catch(error => console.log(error));
    },

1 Ответ

2 голосов
/ 08 июня 2019

Vue.use(VueCookie): расширяет объект Vue, добавляя функциональность $cookie ко всем наследующим компонентам.

Vuex не наследует от Vue, поэтому не будет иметь функциональности $cookie.

Я только что проверил документы vue-cookie , и функциональность должна быть предоставлена ​​глобальному объекту vue через Vue.cookie

Попробуйте использовать cookie на объекте Vueвместо $cookie на Vuex:

Vue.cookie.set('userToken', res.data.token, {domain: 'subdomain.domain.com'});

и

userToken: Vue.cookie.get('userToken')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...