Я пытаюсь извлечь пользователя из моего токена JWT, который обслуживается из конечной точки API Django-Rest, /get-token/
и сохранить пользователя в моем магазине Vuex.
У меня нет настроенной конечной точки для возврата зарегистрированного в user
, и хотя это может быть потенциальным решением, я не вижу причин делать это вместо того, чтобы извлекать пользователя из токена JWT.
Я пытался получить пользователя напрямую из токена JSON через this.$store.commit('setAuthUser', response.data.user)
и response.data.user.username
Login.Vue
axios.post(this.$store.state.endpoints.obtainJWT, payload)
.then((response) => {
this.$store.commit('updateToken', response.data.token)
this.$store.commit('setAuthUser', response.data.user) -------This line is not working
console.log(response.data)
})
store.js
export default new Vuex.Store({
state: {
authUser: {},
isAuthenticated: false,
jwt: localStorage.getItem('token'),
endpoints: {
obtainJWT: 'http://127.0.0.1:8000/get-token/',
refreshJWT: 'http://127.0.0.1:8000/refresh-token/',
baseUrl: 'http://127.0.0.1:8000/main/api/',
}
},
mutations: {
setAuthUser(state, {
authUser,
isAuthenticated
}) {
Vue.set(state, 'authUser', authUser)
Vue.set(state, 'isAuthenticated', isAuthenticated)
},
updateToken(state, newToken) {
localStorage.setItem('token', newToken);
state.jwt = newToken;
},
removeToken(state) {
localStorage.removeItem('token');
state.jwt = null;
}
}
});
Ожидается: правильно извлеченный пользователь и сохраненный в Vuex с помощью мутатора setAuthUser
Факт: ошибка Cannot destructure property 'authUser' of 'undefined' or 'null'.