The Web Developer Bootcamp 2023 セクション52/61
この章では、Node.jsとMongoDBを使用して構築されたWebアプリケーションにおけるユーザー認証と認可の実装に焦点を当てます。このセクションでは、YelpCampのWebアプリケーションにおいて、ユーザーモデルとキャンプ場モデル、そしてレビューシステムを接続するプロセスについて説明します。
ここでは、キャンプ場モデルに "author "というフィールドを追加し、キャンプ場を作成したユーザーのIDを格納する方法について説明します。seedsファイルを更新して、すべてのキャンプ場が1人のユーザーに属するようにし、講演者は、ショーページにキャンプ場の作者のユーザー名を表示する方法を実演しています。また、新しく作成したキャンプ場を、現在ログインしているユーザーと関連付ける方法として、ユーザーIDを取得し、それをキャンプ場の作者として保存する方法も説明されています。
次に、ウェブサイト上のコンテンツを編集・削除する権限を持つ人を制御する方法です。講師は認可の概念を説明し、コンテンツの所有者としてログインしているユーザーにのみボタンを表示する条件を追加することで、テンプレートからこれを制御する方法を実演しています。また、バックエンドのルートを保護することの重要性についても言及し、講演者は不正なリクエストが処理されるのを防ぐためのミドルウェアを作成する。
ミドルウェアは、サインインしたエンドユーザーがキャンプ場を削除、更新、行動する権限を持っているかどうかを確認する。IDでキャンプ場を検索し、リクエストのユーザーIDとキャンプ場の作者IDが等しいかどうかをチェックするロジックを「isAuthor」というミドルウェアに記述しています。また、このミドルウェアは、権限がない場合はエラーメッセージを表示してリダイレクトします。このミドルウェアは、編集、更新、削除のルートに適用されます。
また、Webアプリケーションにレビューシステムを追加するプロセスについても解説しています。ユーザーモデルを参照するレビュースキーマに「author」という新しいフィールドが追加され、各レビューがauthorと関連付けられる。レビューを作成するフォームはログインしたユーザーにしか見えず、レビューを作成するための投稿ルートは「is logged in」ミドルウェアによって保護されています。レビューが作成されると、レビューの著者に現在ログインしているユーザーのIDが設定され、レビューがデータベースへ保存されます。
最後に、一般的なWebアプリケーションの構造として、モデルを定義し、リレーションシップでつなぎ、認証・認可フォームを持つことが挙げられます。また、次のステップとして、アプリのデプロイ、セキュリティ、新機能の追加について語られることを紹介しています。
以上、Web開発ブートキャンプのセクション52では、Node.jsとMongoDBを使って構築したWebアプリケーションにユーザー認証と認可を実装する方法について、包括的なガイドを提供します。このセクションでは、ユーザーモデルとキャンプ場モデルおよびレビューシステムを接続するプロセス、コンテンツを編集または削除する能力を持つ人の制御、およびWebアプリケーションにレビューシステムを追加することをカバーしています。