Nuxtjs-身份验证

时间:2019-07-29 21:18:55

标签: vue.js axios vuex nuxt.js

我在nuxtjs中编写了注册功能。它将一个新用户保存在我的数据库中。但是,之后生成令牌以登录用户似乎存在问题。
register动作由register组件中的方法调用。它在catch块中返回错误响应。在服务器上生成令牌后,它似乎失败。

商店中的操作

async register ({ commit }, { name, slug, email, password }) {
    try {
      const { data } = await this.$axios.post('/users', { name, slug, email, password })
      commit('SET_USER', data)
    } catch (err) {
      commit('base/SET_ERROR', err.response, { root: true })
      throw err
    }
  }


nodejs服务器上的发布功能

router.post('/users', async (req, res) => {
  try {
    const body = _.pick(req.body, ['name', 'slug', 'email', 'password']);
    const user = new User(body);
    await user.save();
    const token = await user.generateAuthToken(); // execution seems to fail on this line
    console.log(token); // never gets called
    req.session['token'] =  'Bearer ' + token;
    req.session['user'] =  user;
    res.header('Authorization', 'Bearer ' + token).send(user);
  } catch (err) {
    res.status(400).json({ message: "Der Account konnte leider nicht erstellt werden" });
  }
});


mongo模型用户中的GenerateAuthToken函数

UserSchema.methods.generateAuthToken = function () {
  var user = this;
  var access = 'auth';
  var token = jwt.sign({_id: user._id.toHexString(), access}, process.env.JWT_SECRET).toString();

  user.tokens.push({access, token});

  return user.save().then(() => {
    return token;
  });
};

错误消息 enter image description here


我将非常感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

也许它并没有太大帮助,但是我会尝试创建一个虚拟令牌并尝试使其与之兼容。我的一种调试技术是隔离代码的每个部分,并确保所有内容都是一件一件地工作,也许该技术很慢,但在大多数情况下都是有效的。

如果一切正常,我将继续调试 generateAuthToken 函数。 如果您的控制台日志从未被调用,则该错误可能出在函数中。

我希望它能有所帮助,对不起,我对MongoDB不太了解,但是一切似乎都还可以。