一、获取用户信息
1.定义请求用户信息接口
(1)传token的动作,在请求拦截中添加
service.interceptors.request.use(
(config) => {
const token = store.getters.token
if (token) {
config.headers.authorization = `Bearer ${token}`
}
return config
},
(error) => {
return Promise.reject(error)
}
)
2.定义调用接口动作
在之前请求动作封装时提到过,把用户信息相关的请求动作放在一起方便管理,在store的action中
下面两个函数都返回了promise实例(async 函数返回的是promise实例),给调用者提供了后续操作的方法
login(context, userInfo) {
return new Promise((resolve, reject) => {
const { username, password } = userInfo
login({
username,
password: md5(password)
})
.then((res) => {
console.log(res)
// context.commit('setToken', res.data.token)
this.commit('user/setToken', res.token)
router.push('/')
resolve(res)
})
.catch((error) => {
reject(error)
})
})
}
},
async getUserInfo() {
try {
const userInfo = await profile()
this.commit('user/setRoles', userInfo)
return userInfo
} catch (error) {
return Promise.reject(error)
}
}
3.在权限拦截时触发动作
此动作触发时机为,用户登录后,进入非白名单页面,检查是否系统保存了用户信息,没有的话,调用该接口