Hasura
先部署 Casdoor(见 服务器安装)。然后按下面的步骤配置应用和 Hasura。
配置Casdoor应用程序
- 创建或使用现有的Casdoor应用程序。
- 添加一个重定向URL:
http://CASDOOR_HOSTNAME/login
- 复制客户端ID;我们将在接下来 的步骤中需要它。
在Casdoor中添加一个用户
创建一个用户,并为应用分配角色。
进入 Users → Add user 打开新建用户页面。

在添加用户名并添加Hasura组织(其他详细信息可选)后保存用户。
通过 "Manage your password" 设置密码。
为您的用户选择一个密码并确认。
构建Hasura应用
通过Docker或Hasura Cloud启动Hasura。
现在创建一个带有以下列的users表:
id类型为文本(主键)username类型为文本
参考下面的图片作为参考。

下一步是为应用创建一个user角色。用户应该只能看到他们自己的记录,而不能看到其他人的记录。
按照下图所示配置user角色。有关更多信息,请阅读在Hasura中配置权限规则。

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

在 Hasura 中设置 JWT_SECRET。
用Casdoor配置Hasura
在 Hasura 中添加 HASURA_GRAPHQL_JWT_SECRET。
为此,转到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。

获取JWT令牌
没有客户端实现时,可以这样调用来获取访问令牌:
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 Certs 页面中的公钥证书。
然后输入你之前为Hasura创建的用户名和密码。
点击“登录”

返回到Casdoor/Token页面。

找到你之前输入的用户名,然后点击“编辑”
复制访问令牌

用访问令牌发起带认证的请求;Hasura 只返回对应的用户,而不是所有用户。
