我正在尝试在Nuxt Js中设置基于JWT的身份验证 . 到目前为止,我已成功登录到我的服务器,检索JWT令牌并将令牌保存在cookie中,以便在页面重新加载时保持状态 .

我已经设置了一个auth中间件,它只是调度一个动作 intiAuth ,请求对象(包含cookie)被传递给它 . intiAuth操作从请求中提取令牌,并从服务器检索用户,并通过提交 setUser 突变来更新状态 .

initAuth: (context, req) => {
    if (req) {
        if (!req.headers.cookie) {
            return;
        }
        const jwtCookie = req.headers.cookie.split(';').find(cookie => cookie.trim().startsWith('jwt='));
        if (!jwtCookie) {
            return;
        }
        const token = jwtCookie.split('=')[1];
        Axios({
            method: 'get',
            url: 'http://localhost:5000/auth/user',
            headers: {
                'Authorization': token.replace('%20', " ");
            }
        }).then((response) => {
               context.commit('setUser', response.data.username);
           });
    } else { console.log('# No Request'); }
 },

Mutation

setUser: (state, payload) => {
      state.user = payload
  }

因此,每次打开新选项卡或重新加载页面时,都会从服务器更新状态 . 现在,每次调用服务器时都会正确获取用户数据,并且我从日志中验证了这一点,但偶尔会发生突变,无法更新状态,从而将用户设置为null . 这种行为是随机的,我找不到可能的原因 . 由于我是NUXT的新手,我不确定这是我的代码的问题还是我的开发环境中的错误 .