跳到主内容

Hasura

在集成之前,我们需要在本地部署Casdoor。

然后我们可以按照以下步骤在我们自己的应用中快速实现基于Casdoor的登录页面。

配置Casdoor应用程序

  1. 创建或使用现有的Casdoor应用程序。
  2. 添加一个重定向URL:http://CASDOOR_HOSTNAME/login Casdoor应用程序设置
  3. 复制客户端ID;我们将在接下来的步骤中需要它。

在Casdoor中添加一个用户

现在你有了应用程序,但没有用户。 这意味着你需要创建一个用户并分配角色。

转到“用户”页面,然后点击右上角的“添加用户”。 这将打开一个新页面,您可以在其中添加新用户。

展示用户页面的图片

在添加用户名并添加Hasura组织(其他详细信息可选)后保存用户。

现在你需要为你的用户设置一个密码,你可以通过点击“管理你的密码”来做到这一点。

为您的用户选择一个密码并确认。

构建Hasura应用

通过Docker或Hasura Cloud启动Hasura。

现在创建一个带有以下列的users表:

  • id类型为文本(主键)
  • username类型为文本

参考下面的图片作为参考。

图片展示如何在Hasura中创建表格

下一步是为应用创建一个user角色。 用户应该只能看到他们自己的记录,而不能看到其他人的记录。

按照下图所示配置user角色。 For more information, read about configuring permission rules in Hasura.

图片展示如何在Hasura中设置权限

这样,用户就不能读取其他人的记录。 他们只能访问他们自己的。

出于测试目的,添加一个虚拟用户。 这是为了确保当你使用JWT令牌时,你只能看到你自己的用户详情,而不能看到其他用户的详情。

图片展示如何在Hasura中添加表记录

现在你需要在Hasura中设置JWT_SECRET

用Casdoor配置Hasura

在这一步,你需要将HASURA_GRAPHQL_JWT_SECRET添加到Hasura。

为此,转到Hasura docker-compose.yaml,然后按照下面的方式添加新的HASURA_GRAPHQL_JWT_SECRET

HASURA_GRAPHQL_JWT_SECRET应该是以下格式。 记住将<Casdoor endpoint>更改为你自己的Casdoor的URL(如https://door.casdoor.com

HASURA_GRAPHQL_JWT_SECRET: '{"claims_map": {
"x-hasura-allowed-roles": {"path": "$.roles"},
"x-hasura-default-role": {"path": "$.roles[0]"},
"x-hasura-user-id": {"path": "$.id"}
},"jwk_url":"<Casdoor endpoint>/.well-known/jwks"}'

保存更改并重新加载docker。

将Clerk JWT URL添加到Hasura

获取JWT令牌

由于没有客户端实现,你可以通过以下URL获取你的访问令牌:

http://localhost:8000/login/oauth/authorize?client_id=<client ID>&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Flogin&scope=read&state=app-built-in<public certificate>>

client ID更改为你之前复制的ID,并输入Casdoor的公共证书,你可以在Casdoor的Certs页面中找到。

然后输入你之前为Hasura创建的用户名和密码。

点击“登录”

获取JWT令牌

返回到Casdoor/Token页面。

令牌页面

找到你之前输入的用户名,然后点击“编辑”

复制访问令牌

访问令牌

现在你可以使用访问令牌来发出经过身份验证的请求。 Hasura返回了适当的用户,而不是从数据库返回所有用户。

图片展示了如何在Hasura中使用Casdoor的访问令牌