我将hermana PostgreSQL和Yoga服务器部署到了Heroku,
但是graphql端点是公共的,任何人都可以对其进行突变。
有没有像hasura一样简单的方法: https://docs.hasura.io/1.0/graphql/manual/deployment/securing-graphql-endpoint.html
PS:我没有使用docker进行部署,而是通过prisma console
中的pyramida向导部署了所有内容。答案 0 :(得分:0)
您需要一个Prisma“秘密”来保护您的端点,以便只有您和您的应用程序才能访问/更改数据。 Prisma将此称为managementApiSecret
(请参阅here)。
我对Prisma控制台不是很熟悉,但是如果您使用prisma.yml
之类的文件将Prisma服务器部署到Heroku,则可以指定如下的secret:
行:{{1 }}。然后,您可以在Heroku上Prisma服务器的设置中设置Config Var,其中密钥为secret: ${env: PRISMA_SECRET}
,并且值为随机字符串。我相信您在使用PRISMA_SECRET
命令时希望做同样的事情。因此,您prisma deploy
应该看起来像这样:
prisma.yml
然后,您需要在Yoga服务器中指定相同的秘密,以便它可以访问Prisma服务器。很难在没有看到瑜伽服务器代码的情况下为您提供帮助,但是我的使用endpoint: ${env:PRISMA_ENDPOINT_PROD}
datamodel: datamodel.graphql
secret: ${env:PRISMA_SECRET}
hooks:
post-deploy:
- graphql get-schema -p prisma
包是这样的:
prisma-binding
您可以看到Yoga服务器使用指定的密码连接到Prisma数据库。 Yoga服务器已部署在Heroku上,并且我已经在Yoga服务器的Heroku设置中指定了const { Prisma } = require('prisma-binding');
const db = new Prisma({
typeDefs: 'src/generated/prisma.graphql',
endpoint: process.env.PRISMA_ENDPOINT_PROD,
secret: process.env.PRISMA_SECRET,
debug: false, // Turn on to console.log queries and mutations
});
module.exports = db;
环境变量。
但是,此设置将阻止您访问浏览器中的Prisma端点,并通过GraphQL游乐场手动查询和更改数据库中的数据。可能有解决此问题的方法,但我不确定如何解决。另外请注意,这不会像Hasura那样为您提供漂亮的登录界面。
如果您想了解更多代码,可以查看Wes Bos的GitHub repo,这是他在其课程“ Fullstack Advanced React&GraphQL”中所使用的。