云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名交易_华为云应用_返利

小七 141 0

服务器哪家好_租用_人工智能大学排名

如果您现在正在开发一个供第三方使用的API,那么选择REST接口来开发API是完全可以原谅的,因为它是一个久经考验的标准,云服务器厂商,用于向消费者传递数据,以及以结构化的方式接受对数据的更改。最近,GraphQL由于其灵活、语义和性能的特性,已经成为开发api的一个有吸引力的替代方案。但是,免费企业管理软件,如果您希望更好地控制数据交换的细节,包括与使用jwt的第三方授权服务器集成,以及能够在字段级别快速轻松地设置基于角色的权限,该怎么办?这就是Hasura通过他们的GraphQL平台实现的,该平台通过PostgreSQL数据库生成graphqlapi。要突出几个功能:PostgreSQL数据库模式可以使用内置接口设计和填充数据可以使用GraphQL语法查询数据库,还可以从Hasura管理控制台中查看GraphQL模式文档角色可以分配给单独的表和字段,也可以为单个操作(如选择或插入数据)分配不同的角色和权限可以使用JSON Web令牌执行授权,该令牌由第三方授权服务器(如Auth0)颁发"Hasura平台利用JWT和GraphQL技术,提供了一个在PostgreSQL数据库中查询和操作数据的平台,同时考虑到授权令牌中指定的角色。"在推特上留言JSON Web令牌简介从智威汤逊:jsonwebtoken(JWT)是一个开放标准(rfc7519),它定义了一种紧凑的、自包含的方式,用于在各方之间以JSON对象安全地传输信息。此信息可以验证和信任,因为它是数字签名的。jwt可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。实际上,这是一个由三部分组成的字符串,由句点分隔:第一部分定义头,包含诸如所使用的签名算法之类的信息第二部分是代币的主体,包括所有的债权。可能是用户名、到期日、发行日期和电子邮件地址最后一部分是签名,它是通过对报头和正文进行加密签名来获得的,以确保数据没有被篡改JWT是用户通过授权服务器进行身份验证的结果。在Hasura平台的情况下,这个JWT可以用于授权请求,因此可以根据令牌中的声明进行查询和变异。我们将在本文稍后的演示中看到这是如何工作的。JWT的紧凑特性使得在查询字符串、头和请求体中传递或存储在cookie中非常容易。什么是GraphQL?概述GraphQL本质上是一种查询语言,它允许您根据类型定义API。它与数据存储无关,并支持多种不同的平台和语言。不是用状态代码和语义url定义API,而是定义类型,然后使用熟悉但功能强大的语法构造查询。例如:{文章{身份证件,头衔,作者{名称}}}这描述了对文章的查询,返回id、title和作者的姓名。如您所见,它支持嵌套的数据库对象(author是模式中的另一个表,从文章链接到)。突变也可以被定义,它描述了如何改变数据。此外,可以在一个请求中进行多个查询,这在客户机希望从服务器检索大量可能不相关的数据点时最有用。哈苏拉方法Hasura平台利用这些技术提供了一个查询和操作PostgreSQL数据库中数据的平台,同时考虑到授权令牌中指定的角色。Hasura控制台允许用户创建一个数据库,定义它的模式,并用数据填充它。然后,Hasura将在这个数据库的基础上生成一个graphqlapi,自动生成适当的类型、查询和变异,允许客户机完全查询和操作底层数据。Hasura采用基于角色的授权方法,智能建站软件,因此单个角色的访问权限可以缩小到整个模式的一个子集(甚至可以缩小到字段级别)。由于每个角色都映射到特定的授权规则,因此如果需要的话,甚至可以阻止它运行某些突变。此外,可以基于授权令牌中的声明将查询委托给上游服务。JWT内部的自定义声明用于告诉Hasura调用者的角色,以便Hasura可以强制执行必要的授权规则来决定调用者可以做什么,不能做什么。[来源]Hasura使用的索赔示例如下:{"https://hasura.io/jwt/claims": {"x-hasura-default-role":"匿名","x-hasura-allowed-roles":["用户",物联网的,"匿名"]}这两个键定义了可能的角色以及缺少"X-Hasura-role"头时的默认角色。在Auth0的情况下,这些自定义声明可以使用规则放置到位,这是一个平台特性,可用于在用户进行身份验证时动态增强令牌。演示:查询数据让我们看看Hasura和JWTs的授权在实践中是如何工作的。已经设置了一个演示程序,它允许您构造查询并查看基于角色的权限系统的运行情况。这个演示已经预先配置了一个数据库,其中包含作者、文章、标记和一个将许多文章连接到多个标记的关系表。让我们看看如何查询这些数据。执行匿名查询浏览到https://auth0-hasura-demo.herokuapp.com,并使用"hasurademo"作为访问密钥。接下来,您将看到Hasura控制台:该接口允许您指定查询GraphQL接口时将使用的一些请求头。要演示用户的角色如何影响其查询和修改数据的能力,淘客怎么做,请通过单击右侧的十字来删除X-Hasura-Access-Key头,然后输入一个值为"anonymous"的新头X-Hasura-role:现在,让我们进行一个查询。在屏幕下半部分的Graphiql查询条目区域内使用以下查询:{文章{身份证件,标题}}要运行查询,请按Ctrl+Enter(如果您在Mac上,请按Cmd+Enter),或者单击查询面板上方的大"play"按钮。您将在屏幕的右侧看到查询的结果;您已经成功地检索到数据库中当前两篇文章的结果!现在让我们尝试一个突变。更改查询,使其执行以下变异:突变{插入标记(对象:[{name:""}]){返回{名称}}}这是一个变异,它将一个具有指定标记名的新标记插入到数据库中。您应该将替换为您选择的值。现在运行这个突变会返回一个错误,让你知道这个突变并不存在。这是正确的,因为权限已有效地设置为匿名角色无法对数据库进行更改。graphqlapi文档也指出了这一点,因为它不显示此角色可以调用的任何突变。要查看此信息,请单击查询窗口右侧的"