老师这里报错401了

来源:8-3 登录第二部分 axios 设置通用 header

星光荡开宇宙

2022-09-20

我测试了很久没找到错误,我直接在commit的login里面直接发送axios.get请求获取用户信息可以,postman发送也可以。
我实在没办法了

我代码提交github了:https://github.com/xing-6464/zheye

写回答

1回答

张轩

2022-09-21

同学你好

你这里问题的关键是 对应的 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')

亲测可用~

0
1
星光荡开宇宙
懂了,谢谢老师
2022-09-21
共1条回复

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程