我们有一个移动应用程序,未经身份验证的用户应该能够在其中读取数据,并且他们还应该看到项目资源的实时更新。因此,我们启用了对 Project 资源的 graphql 订阅,但是在尝试订阅 Project 更新时我们遇到了未经授权的错误。
我们尝试了以下方法:
从aws-amplify
文档中:
You may disable authorization checks on subscriptions or completely turn off subscriptions as well by specifying either public or off in @model: @model (subscriptions: { level: public })
,我们已经尝试过了,但它不起作用。
我们已经设法通过在下面的示例中指定更新来使其工作,
{ allow: public, provider: iam, operations: [read, update] }
但是我们不想将更新操作的访问权限授予未经授权的用户。
我们的模型项目是这样定义的
type Project
@model(subscriptions: { level: public })
@auth(
rules: [
{
allow: private
provider: userPools
operations: [read, create, update, delete]
}
{ allow: public, provider: iam, operations: [read] }
]
) {
读取是成功的,但是当客户端尝试订阅更新时,我们会得到未经授权的访问并出错。
"errors": [
{
"path": [
"onUpdateProject"
],
"data": null,
"errorType": "Unauthorized",
"errorInfo": null,
"locations": [
{
"line": 2,
"column": 3,
"sourceName": null
}
],
"message": "Not Authorized to access onUpdateProject on type Subscription"
}
是否可以在不允许公众读取操作的情况下订阅更新?