【问题标题】:Auth Privledge FQL query faunaDB create permission denied with udr for collectionAuth Privledge FQL 查询动物区数据库创建权限被 udr 拒绝以进行收集
【发布时间】:2021-06-05 01:06:58
【问题描述】:

我有以下用户定义的安全角色,在创建名为 formEntryData 的集合时使用谓词函数。如果我没有下面的功能,现在我可以创建。

在创建函数选项下

Lambda("values", Equals(Identity(), Select(["data"], Var("values"))))

现在我正在使用以下代码创建一个请求,当通过选中该框将创建设置为全部时,该代码有效,但如果我使用上面的函数,它会因权限被拒绝而失败。我一定是做错了什么

import { query as q } from "faunadb";
import { serverClient } from "../../utils/fauna-auth";
import { authClient } from "../../utils/fauna-auth";
import { getAuthCookie } from "../../utils/auth-cookies";

export default async (req, res) => {
  //   const { firstName, lastName, telephone, creditCardNumber } = req.body;
  const token = getAuthCookie(req);
  console.log(token);

  const data = req.body.data;
  var element = req.body.data;

  element["FormID"] = req.body.id;

  try {
    await authClient(token).query(
      q.Create(q.Collection("FormEntryData"), {
        data: element,
      })
    );
    res.status(200).end();
  } catch (e) {
    res.status(500).json({ error: e.message });
  }
};

任何帮助将不胜感激。

更新:我还为该集合添加了一个索引,并在角色中赋予它读取权限

【问题讨论】:

    标签: javascript next.js faunadb


    【解决方案1】:

    这也是在 Fauna 社区论坛上提出的问题:https://forums.fauna.com/t/roles-membership-auth-token-permissions-denied/1681/4

    看起来需要两件事:

    • 更新create 谓词以匹配data.user 字段:Lambda("values", Equals(CurrentIdentity(), Select(["data", "user"], Var("values")))),并且
    • 需要提供用户字段才能传递提供的谓词。

    论坛中的答案使用了两个请求:一个是检索调用用户文档(使用CurrentIdentity()),另一个是创建FormEntryData 文档。这可以(应该)通过单个请求来限制成本(对 Fauna 的每个请求至少需要一个 Transactional Compute Op),当然还有两次往返的网络时间。考虑以下几点:

    await authClient(token).query(
      Let(
        {
          userRef: q.CurrentIdentity(),
        },
        q.Create(q.Collection("FormEntryData"), {
          data: {
            ...element,
            user: q.Var("userRef")
          }
        })
      )
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-17
      • 2015-03-22
      • 1970-01-01
      相关资源
      最近更新 更多