代码之家  ›  专栏  ›  技术社区  ›  leremjs

如何作为特定用户运行云代码函数

  •  1
  • leremjs  · 技术社区  · 7 年前

    我的解析服务器中有一些数据是每个用户专用的,所以当我创建对象时,我给了它们一个ACL,提供读取和;仅对创建它们的用户具有写访问权限。

    我现在正在将一些读/写数据库的代码移动到云代码中,我注意到查询不再使用这些ACL返回结果。请求。传递给云代码函数的用户参数设置为登录用户,因此我假设云代码函数是作为该用户运行的,但情况似乎并非如此。

    我可以用主键运行查询,但我更喜欢以当前用户的身份运行,这样函数就不会意外地弄乱其他用户的数据。而是传入会话令牌:

    let options = { sessionToken: request.headers['x-parse-session-token'] };
    new Parse.Query('MyClass').find(options);
    

    这是可行的,但似乎很复杂。这是最好的方式吗?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Ran Hassid    7 年前

    你说得对。。。

    在云中执行任何CRUD操作时,必须传递登录的用户会话令牌(如果此对象受ACL保护)。为了做到这一点,您需要 sessionToken公司 并将其作为参数传递给要执行的函数。因此,在云代码中,您应该执行以下操作:

    var query = new Parse.Query("MyQuery");
    query.find({
        sessionToken: request.user.get("sessionToken")
    }).then(results => {
    
    });
    

    在上面的代码中,我将当前登录用户的会话令牌传递给查询。保存或删除对象时可以执行相同的操作。。。