Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
427 views
in Technique[技术] by (71.8m points)

vue.js - Vuex : token doesn't stored in local storage

I have this store in Vue App using vuex :

import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    email: null,
    token: localStorage.getItem('token') || null,
    role: null
  },
  mutations: {
    saveToken (state, token) {
      state.token = token
    }
  },
  actions: {
    createToken (context, user) {
      axios.post('http://127.0.0.1:8001/api/user/login', {
        email: user.email,
        password: user.password
      }).then(response => {
        const token = response.data.token
        localStorage.setItem('token', token)
        context.commit('saveToken', token)
      })
    }
  },
  modules: {
  }
})

When I login the token state is changed correctly, but when I refresh the page the state is null again.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

First of all, you need to set the axios headers authorization

  axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;

The above is if you are using Bearer auth.

Secondly, make sure if backend sends in login a refresh token because you need also that to save in local storage.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...