【发布时间】:2019-10-12 18:23:03
【问题描述】:
我有一段代码 (auth.js) 应该在用户成功登录后触发。但我注意到 2 行似乎不起作用。它没有被触发。
this.$axios.defaults.headers.common['Authorization'] = 'Bearer' + token; 和 this.$eventHub.$emit('userLoggedIn');
我需要做些什么来使两者都能正常工作吗?我已将它们设置为可在全球范围内访问。我检查了这一行: localStorage.setItem('user', JSON.stringify(user)); 并且似乎工作正常。
我已尝试删除 this 字词,但无济于事。
main.js
import auth from '@/auth'
import axios from 'axios'
Vue.prototype.$axios = axios
Vue.prototype.$auth = auth
Vue.prototype.$eventHub = new Vue();
auth.js
class Auth {
constructor() {
this.token = null;
this.user = null;
}
login(token, user) {
localStorage.setItem('token', token);
localStorage.setItem('user', JSON.stringify(user));
this.$axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;
this.token = token;
this.user = user;
this.$eventHub.$emit('userLoggedIn');
}
check() {
return !! this.token;
}
}
export default new Auth();
这是我的 Login.vue 中调用 auth.js 登录方法的代码:
login() {
let data = {
email: this.username,
password: this.password
};
this.$axios.post('http://127.0.0.1:8000/api/login', data)
.then(({data}) => {
if (data.status == 200) {
this.$auth.login(data.data.token, data.data.user);
this.$router.replace('about');
} else {
// console.log("Error");
}
})
.catch(() => {
//alert(response.data.message);
});
}
【问题讨论】:
标签: vuejs2