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

域名备案_odoo云服务器_安全稳定

小七 141 0

大数据数据库_哪里买_物联网安全标准

在本教程中,我们将使用graphqlapi构建一个实时待办应用程序后端,使用JSON Web令牌进行安全保护。用Hasura设置实时后端Hasura通过PostgreSQL提供即时实时GraphQL api。JWT内置了基于角色的访问控制和访问控制。当连接到PostgreSQL数据库时,Hasura会自动生成类型、查询和突变,客户机可以直接使用auth进行查询。使用React实现了一个前端应用程序,它具有以下特性:一个简单的用户界面列出,添加和删除我们的待办事项一种面向公共dos的协作式实时用户界面身份验证0自动同步用户注册与数据库的Auth0规则Apollo客户端连接到GraphqlAPI我们将更多地关注使用Hasura和Auth0构建后端,并以React应用程序演示为例来展示所有东西是如何集成的。在Heroku上一键部署Hasura首先,将Hasura GraphQL引擎部署到Heroku。这将为您提供一个Hasura应用程序的实例,您可以使用它来阅读本文。PostgreSQL数据库将与Hasura一起自动配置。如果您目前没有Heroku帐户,则需要注册。注意:您可以在Heroku上免费注册和部署应用程序首先,云服务器 免费,给你的部署一个名字。这个名字必须是唯一的,但是Heroku会告诉你它是否已经被拿走了。接下来,单击Deploy app开始部署过程。短时间后,你的应用程序将准备就绪。单击"查看"按钮导航到您的Hasura实例,您将看到Hasura控制台:创建表和关系现在让我们继续为应用程序创建表。对于这个实时待办应用程序,我们需要一个表来存储待办事项,一个表来存储用户,以及一个视图来跟踪在线用户列表。正在创建"users"表在Hasura控制台中,转到datatab部分并单击createtable按钮。首先,使用tablename字段将表的名称指定为"users"。接下来,使用下面的值将列添加到表中。如果没有指定默认值,请将该字段留空:字段名称类型默认值身份证件整数(自动递增)名称文本身份验证号文本创建于时间戳现在()最后一次见到时间戳现在()最后,自助免费建站,选择主键下的auth0_id字段。完成后,单击底部的Create按钮将该表添加到数据库中。正在创建"todos"表接下来,创建todos表。可以单击屏幕左侧的"添加表"按钮,也可以单击顶部的"数据"选项卡,然后单击"创建表"。再次使用table name字段将表的名称指定为"todos"。然后,使用下面的值将列添加到表中。如果没有指定默认值,请将该字段留空:字段名称类型默认值身份证件整数(自动递增)文本文本你完成了吗布尔型假创建于时间戳现在()更新时间时间戳现在()是公开的吗布尔型假用户?id文本最后,选择Primary Key下的id字段。完成后,单击底部的Create按钮将该表添加到数据库中。一旦创建了todos表,我们需要为user_id列设置外键,以指向users->auth0_id列。为此,网络云服务器,从屏幕左侧选择todos表,然后单击Modify选项卡,最后单击Foreign Keys标题下的add按钮。要添加外键,请将引用表设置为users,将from列设置为user_id,将To列设置为auth0_id,然后单击Save按钮。一旦添加了外键,我们需要添加一个关系,以便以后可以使用graphqlapi查询它。创建用户对象关系我们需要在todos表和创建todo的用户之间添加一个关系。在编辑todos表时,单击Relationships选项卡并为todos表的user_id列添加用户对象关系。我们可以通过单击"建议的对象关系"下的"添加"按钮来完成此操作:以user的身份输入关系名称,然后单击Save按钮。创建"联机用户"视图最后,让我们添加一个视图来获取当前的联机用户列表。应用程序需要此视图来查找已登录并处于联机状态的用户。这是应用程序的实时功能之一。可以将视图视为预保存的SQL查询。可以指定从单个表(或多个表)中提取数据的SQL语句,并且可以在以后很容易地调用它。我们将使用这个来创建一个视图,该视图显示了在过去30秒内被"看到"的所有用户。这些将被视为当前在线的用户列表。要创建PostgreSQL视图,请转到数据页并单击左侧边栏上的SQL。也可以使用URL路径/console/data/sql访问同一页面。现在添加以下SQL命令以创建所需的视图:创建或替换视图"public"。"联机用户"为选择用户名, 上次看到的用户来自用户在哪里(上次看到的用户>=(now()-'00:00:30'::间隔));将上面的SQL粘贴到SQL框中,然后按Run按钮创建视图。太好了!现在我们已经准备好了基本模式。让我们为表添加权限以限制行级访问。配置权限该应用程序的目的是允许用户在自己的todo和标记为public的todo上进行协作。转到todos表下的Permissions选项卡以添加相关权限。在这里您可以看到一个权限矩阵,其中可以针对每个角色指定插入、选择、更新和删除数据的权限。在角色文本框中,键入"user",然后单击此文本框右侧的插入单元格。这将在下面打开一个部分,允许您配置自定义检查以及此角色对插入操作可见的列。我们将添加一个自定义检查,该检查允许将待办事项插入数据库,前提是要么是"公共"为true,要么是请求具有有效的用户ID。为此,请单击"使用自定义检查"单选按钮以显示检查编辑器并开始填充字段。当编辑器第一次出现时,它将如下所示:单击编辑器中的下拉框将显示todos表中已添加的所有字段,以及底部的几个其他项。首先,大数据怎么样,选择"或"。这将显示另一个下拉框。这一次,选择is_public字段,然后在下面的下拉框中选择\u eq。最后,在_eq值旁边,选择true。你应该得到这样的支票:既然我们已经添加了一个"or"节点,我们需要两个字段来检查。使用"节点"或"节点"内的另一个未填充的下拉框,选择"用户标识"字段,然后再次从显示的下拉列表中选择"均衡"。在出现的文本编辑器中,您可以在这里输入值"X-Hasura-User-Id",或者单击字段旁边的绿色链接以自动添加该值。最后,你应该得到这样的结果:最后,展开Column insert permissions部分,使用Toggle all链接选择"allowinput for thes columns"下的所有列,然后单击savepermissions按钮。在上面的权限中,我们的意思是todo->is\u public应该为true,或者to-do必须是由发出此请求的用户创建的。将权限复制到其他操作对于select、update和delete操作,我们刚刚应用于insert操作的权限也应该保持不变。幸运的是,我们可以将insert的权限复制到其他操作中,而不必再次执行整个过程。作为如何执行此操作的示例,单击"user"角色的select单元格,编辑select的权限。这将打开select操作的权限配置。如果您先前选择了"使用自定义检查"单选按钮,则会有一个新选项,标题为"与插入相同的自定义检查"。选择此选项将导致insert的权限也应用于select。选择此选项。还要确保单击Toggle all next以允许访问这些列(展开Column select permissions部分),这样就可以从查询中返回所有字段。最后,按保存权限按钮。对update和delete操作执行相同的步骤,以便它们都具有与insert相同的权限,并且可以从查询中返回所有字段。注意:"删除"操作不会出现选择可用列的界面用户表权限我们还需要允许插入到users表中。登录的用户应该只能修改自己的记录。现在我们来设置权限。在左侧栏上,单击users表导航到表配置,然后切换到Permissions选项卡。单击编辑图标(铅笔图标)修改角色用户的插入权限。这将在下面打开一个部分,国内大数据,允许您配置其权限。再次单击"使用自定义检查"单选按钮。这里我们只允许在auth0_id等于X-Hasura-User-id时插入记录。选择Allowinputforthecolumns选项,因为我们希望允许用户为所有列输入数据。您可以通过展开Column insert permissions部分并单击Toggle all链接来快速完成此操作。单击