【NestJS x Auth0】NestJSで作成したAPIにAuth0の認証/認可を追加する 〜準備編〜
NestJSで作成したAPIにAuth0の認証/認可を追加し、認証状態やロールによってAPIの実行可否を制御できるようにしていきます。
この記事では、準備段階としてNestJS側の実装をします。
また、前提としてUdemy講座でNestJSの基本を知った上で進めています。
以下の講座は、NestJSの知識ほぼゼロの状態でもかなりわかりやすく、APIの実装から認証機能の追加、DBの操作やユニットテストの書き方まで網羅されているため非常におすすめです。
最終的なゴールイメージ
- CRUDのAPIがある:
POST /items
GET /items
GET /items/{:itemId}
PATCH /items/{:itemId}
DELETE /items/{:itemId}
- 2種類のロールがある:
- 管理者: CRUDすべての操作を実行可能
- 利用者: CRUが実行可能
- 認証していない場合、Readのみ実行可能とする。
たぶんやらないこと
- APIの中身の実装は凝らない。
- 実際にデータを作成/削除したり、DBに保存したりはしない予定。
1. NestJSのプロジェクトを作成する
Nest CLIを使ってNestJSのプロジェクトを作成します。
# npx nest new {プロジェクト名}
npx nest new nest_with_auth0
プロジェクトの作成が完了したら、ディレクトリを移動しておきます。
cd nest_with_auth0
2. items リソースを作成する
Nest CLIを使って items リソースを作成します。
g
はgenerate、res
はresourceのエイリアスです。
# npx nest generate resource {リソース名}
npx nest g res items
src/items
配下に必要なファイルが生成されます。
動作確認
念の為動作確認してみます。
以下のコマンドでサーバーを起動後、ブラウザなどでhttp://localhost:3000/items
にアクセスしてみます。
# Watchモードで起動
npm run start:dev
This action returns all items
と表示されていれば正しく動いてそうです。
これで、APIの基礎となる部分は完成です。
つづく・・・