Моя цель:
Я не буду создавать плагин, который будет устанавливать заголовок с токеном для всех запросов.
Проблема:
Плагин не работает.
Комментарии:
Плагин нужно добавить в модуль хранилища. (Может быть, в данном случае это имеет какое-то значение. Не знаю)
Код плагина:
export default function(store){
store.subscribe((mutation, state) => {
if(mutation.type === "GetToken"){
console.log('TOKEN: ' + state.token);
Vue.http.interceptors.push((request, next) => {
request.headers.set('Authorization', 'Bearer ' +state.token);
next();
});
}
});
}
код хранения:
import AuthenticationPlugin from "../plugins/authorization"
export default {
namespaced: true,
plugins: [AuthenticationPlugin],
state:{
token: null,
email: null,
signinResponse:{
ok: null,
status: null,
statusText: null,
url: null,
data: null,
},
},
getters:{
userToken(state){
return state.token;
},
userSigninResponseOk(state){
return state.signinResponse.ok;
},
userSigninResponseStatus(state){
return state.signinResponse.status;
},
userSigninResponseStatusText(state){
return state.signinResponse.statusText;
},
userSigninResponseUrl(state){
return state.signinResponse.url;
},
userSigninResponseData(state){
return state.signinResponse.data;
},
},
mutations:{
GetToken(state, credentials){
let c = credentials;
let s = state;
s.email = c.email;
Vue.http.post('api/admin/signin', {
'email': c.email ,
'password': c.password,
}).then(response=>{
let r = response,
d = r.data,
s = state,
sr= s.signinResponse;
s.token = d.hasOwnProperty('token') ? d.token : null;
sr.ok = r.ok;
sr.status = r.status;
sr.statusText = r.statusText;
sr.url = r.url;
sr.data = r.data;
}, response=>{
let r = response,
d = r.data,
s = state,
sr= s.signinResponse;
sr.token = null;
sr.ok = r.ok;
sr.status = r.status;
sr.statusText = r.statusText;
sr.url = r.url;
sr.data = r.data;
});
}
},
actions:{
GetToken(context, credentials){
context.commit('GetToken', credentials);
}
},
}