代码之家  ›  专栏  ›  技术社区  ›  James Ives

仅访问当前用户数据

  •  0
  • James Ives  · 技术社区  · 8 年前

    我正在我的一个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 回复  |  直到 8 年前
        1
  •  0
  •   Marcia Ong    8 年前

    我不认为在默认的Express请求中有一个名为req.currentuser的变量名。

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

    对于post/put/delete,将数据存储在body中,您可以在req.body中获取数据。

    能给我看看你的邮差API发送请求和请求数据吗?

    推荐文章