仅访问当前用户数据

时间:2018-06-19 04:26:04

标签: node.js express

我正在使用我的Express应用程序中的几个API端点进行记笔记。到目前为止,我已经使用JWT构建了身份验证,现在我正在尝试为经过身份验证的用户备注创建CRUD端点。我遇到的问题是在当前登录用户之间建立关联,以及他们是否有权对该项进行更改。

在我的authentication控制器中,我尝试在请求中设置一些内容,说明经过身份验证的用户是谁:

exports.signin = function(req, res, next) {
  req.currentUser = req.user;
  res.send({ token: tokenForUser(req.user)  });
}

我在我的用户模型中设置了一个检查对象是否相同的方法:

userSchema.methods.canAccess = function(object) {
  return this.equals(object) ||
  (object.owner && object.owner == this.id)
}

最后在我创建笔记的路线上,我的目标是能够执行if ( req.currentUser.canAccess(req.user) )之类的操作,但我遇到的问题是currentUser未定义。

我觉得我在这里的某个地方犯了一个关键的错误,任何帮助都会受到赞赏。

更新(路线)

module.exports = function(app) {
  app.get('/', requireAuth, (req, res) => {
    res.send({ message: `Welcome back ${res.req.user.email}` })
  });

  app.post('/signin', requireSignIn, Authentication.signin);
  app.post('/signup', Authentication.signup);

  app.post('/notes/create', requireSignIn, Notes.create);
}

1 个答案:

答案 0 :(得分:0)

我认为在默认快递请求中有一个名为req.currentUser的变量名称。

您可以在params / header / query中将数据存储在GET请求中,并在req.query / req.params / req.headers中访问它们。

对于POST / PUT / DELETE在正文中存储数据,你可以在req.body中取出它们。

可以告诉我你的邮递员api发送请求和需求数据吗?