跳到主内容

Hasura

Deploy Casdoor first (see Server installation). Then configure the application and Hasura as below.

配置Casdoor应用程序

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

在Casdoor中添加一个用户

Create a user and assign a role to the application.

Go to UsersAdd user to open the new-user page.

展示用户页面的图片

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

Set a password via "Manage your password".

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

构建Hasura应用

通过Docker或Hasura Cloud启动Hasura。

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

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

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

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

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

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

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

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

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

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

Set JWT_SECRET in Hasura.

用Casdoor配置Hasura

Add HASURA_GRAPHQL_JWT_SECRET to 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令牌

With no client implementation, obtain an access token by calling:

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>>

Change client ID to the ID you copied before and input the public certificate of Casdoor, from the Casdoor Certs page.

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

点击“登录”

获取JWT令牌

返回到Casdoor/Token页面。

令牌页面

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

复制访问令牌

访问令牌

Use the access token for authenticated requests; Hasura returns the matching user instead of all users.

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