老师这里报错401了
来源:8-3 登录第二部分 axios 设置通用 header
星光荡开宇宙
2022-09-20
我测试了很久没找到错误,我直接在commit的login里面直接发送axios.get请求获取用户信息可以,postman发送也可以。
我实在没办法了
我代码提交github了:https://github.com/xing-6464/zheye
写回答
1回答
-
同学你好
你这里问题的关键是 对应的 Promise 没有返回。导致在 mutation 当中拿不到数据,设置 token失败,造成最终 fetchCurrent 请求就没有带着 token,显示 401 错误。
// 来到 store 当中 const getAndCommit = async (url: string, mutationName: string, commit: Commit) => { const { data } = await axios.get(url) commit(mutationName, data) // 添加返回 return data } const postAndCommit = async (url: string, mutationName: string, commit: Commit, payload: any) => { const { data } = await axios.post(url, payload) commit(mutationName, data) // 添加返回 return data } fetchCurrentUser ({ commit }) { // 添加 return return getAndCommit('/user/current', 'fetchCurrentUser', commit) }, login ({ commit }, payload) { // 添加 return return postAndCommit('/user/login', 'login', commit, payload) }, // 在 Login.vue 当中 store.dispatch('loginAndFetch', payload).then(data => { console.log(data) router.push('/') }) // 注释掉 66/67 行,你这个应该是用来测试的,现在不需要了 // router.push('/') // store.commit('login')
亲测可用~
012022-09-21
相似问题