0

是否可以为 session_variables 创建自定义属性?

每当我通过在 Hasura 中创建的操作调用没有服务器的函数时,我需要在请求标头中发送x-hasura-admin-secret以授权对我的端点的调用,问题是该调用将具有不正确的角色 admin当从用户调用该函数时执行此调用。

前任。:

const execute = async (variables) => {
  const fetchResponse = await fetch(
    "https://myapp-hml.herokuapp.com/v1/graphql",
    {
      method: 'POST',
      headers: { 
            // I would like to pass the user authorization here
            'x-hasura-admin-secret': process.env.HASURA_ADMIN_SECRET },
      body: JSON.stringify({
        query: HASURA_OPERATION,
        variables
      })
    }
  );
  const data = await fetchResponse.json();
  console.log('DEBUG: ', data);
  return data;
};

这样我会收到具有管理员类型授权的请求,并且我希望收到这个经过身份验证的请求,并获得来自在没有服务器的情况下调用触发此功能的操作的用户的授权,因为这样我可以通过日志知道哪个用户触发了在没有服务器的情况下调用此函数的操作。


真正满足我需要的是:

当我的无服务器函数通过Hasura Action 接收到 POST 调用 时,我需要在我的session_variables对象中发送一个自定义属性。

前任。:

{
    session_variables: {
        'x-hasura-role': 'user',
        'x-hasura-user-id': 'facebook|3813878855387420',
        'x-hasura-authorization': 'Bearer xxxxx' // custom attribute

    },
    input: { title: 'Title' },
    action: { name: 'insertTodo' }
}

在 Hasura 的操作中,我可以定义哪个用户规则可以在没有服务器的情况下调用触发此功能的此操作,但我想通过在方法execute中发送从session_variables.

我在 Vercel 中使用无服务器功能,Next.js 使用 NextAuth.js 进行身份验证,使用 Auth0 进行 JWT 类型身份验证。

4

0 回答 0