5.9 KiB
アクセス権の設定
アクセス権の設定を行います。Hasuraはテーブルの行単位でアクセス制御を行うことが可能です。このハンズオンでは秘密鍵を持たずとも誰でもREST APIを利用できるようにします。
注: セキュアではないので本番環境ではJWT等で認証・認可しましょう
[Data Manager] > [View Database] > pages
テーブル > [Permissions]パネルから、テーブル内のデータのアクセス件を設定可能です。
認証・認可していない利用者のために、ここでは例として anonymous
ロールを割り当てます。
insert (データの挿入) 権限の設定
anonymous
ロールの行 > insert の列を選択し、データの挿入の権限の設定を行います。
下記の項目を選択し、[Save Permissions]ボタンで権限を保存します。
- Row insert permissions > Without any checks
- Column insert permissions >
id
content
([Toggle All]ボタンを押す)
select (データの取得) 権限の設定
anonymous
ロールの行 > select の列を選択し、データの取得の権限の設定を行います。
下記の項目を選択し、[Save Permissions]ボタンで権限を保存します。
- Row select permissions > Without any checks
- Column select permissions >
id
content
([Toggle All]ボタンを押す)
update (データの更新) 権限の設定
anonymous
ロールの行 > update の列を選択し、データの取得の権限の設定を行います。
下記の項目を選択し、[Save Permissions]ボタンで権限を保存します。
- Pre-update check > Without any checks
- Post-update check > Without any checks
- Column update permissions >
id
content
([Toggle All]ボタンを押す)
anonymous
ロールのinsert、select、updateに✅マークが入っていれば完了です。
環境変数 HASURA_GRAPHQL_UNAUTHORIZED_ROLE=anonymous
の設定
Hasuraの環境変数として HASURA_GRAPHQL_UNAUTHORIZED_ROLE=anonymous
を与えることで、認証・認可していない利用者に割り当てられるロールを設定します。
Hasura Cloudのプロジェクトの画面に戻り、[Env vars]にアクセスします。
[+ New Env Var]ボタンを押して、環境変数を追加します。
環境変数 | 説明 | 値 |
---|---|---|
HASURA_GRAPHQL_UNAUTHORIZED_ROLE |
認証・認可されていない利用者に割り当てるロール | anonymous |
入力後、[Add]ボタン押して追加します。
REST APIエンドポイントの確認
実際にHasuraのREST APIエンドポイントにアクセスできるか確認してみましょう。
- プロトコル: HTTPS
- ドメイン名:
{Hasura Cloudのプロジェクト名}.hasura.app
名称 | HTTPメソッドとパス | 説明 |
---|---|---|
ページの取得 | GET /api/rest/page/:id |
割り当てられた識別子 id をもつページを取得します。ページが存在する場合、レスポンスボディには data.page.content プロパティを含みます。 |
ページの更新 | PUT /api/rest/page/:id |
割り当てられた識別子 id をもつページを更新します。リクエストボディには content プロパティを与えます。 |
例: id
が 1
のページにアクセスする https://memo-demo.hasura.app/api/rest/page/1
Hasura Cloudで作成したREST APIエンドポイントにアクセスするには、Hasura Cloudのプロジェクト名の直後に .hasura.app
を加えたドメイン名でアクセスできます。
たとえば、Hasura Cloudのプロジェクト名が memo-demo
の場合、ドメイン名は memo-demo.hasura.app
となります。プロジェクトによって異なるので、自分の作成したプロジェクトに合わせて書き換えましょう。
これで、REST APIエンドポイントをWebアプリから利用する準備が整いました。