投稿者: Jon Galloway
MVC ミュージック ストアは、web 開発に MVC と Visual Studio ASP.NET 使用する方法を段階的に紹介し、説明するチュートリアル アプリケーションです。
MVC ミュージック ストアは、音楽アルバムをオンラインで販売し、基本的なサイト管理、ユーザー サインイン、ショッピング カート機能を実装する軽量のサンプル ストア実装です。
このチュートリアル シリーズでは、ASP.NET MVC ミュージック ストア サンプル アプリケーションをビルドするために実行されるすべての手順について詳しく説明します。 パート 7 では、メンバーシップと承認について説明します。
Microsoft Store Manager コントローラーは、現在、サイトにアクセスするすべてのユーザーがアクセスできます。 これを変更して、サイト管理者へのアクセス許可を制限しましょう。
AccountController とビューの追加
完全な ASP.NET MVC 3 Web アプリケーション テンプレートと ASP.NET MVC 3 空の Web アプリケーション テンプレートの違いの 1 つは、空のテンプレートにアカウント コントローラーが含まれていない点です。 完全な ASP.NET MVC 3 Web アプリケーション テンプレートから作成された新しい ASP.NET MVC アプリケーションからいくつかのファイルをコピーして、アカウント コントローラーを追加します。
完全な ASP.NET MVC 3 Web アプリケーション テンプレートを使用して新しい ASP.NET MVC アプリケーションを作成し、次のファイルをプロジェクト内の同じディレクトリにコピーします。
- Controllers ディレクトリ内のAccountController.csをコピーする
- Models ディレクトリで AccountModels をコピーする
- Views ディレクトリ内にアカウント ディレクトリを作成し、次の 4 つのビューをすべてコピーします。
Controller クラスと Model クラスの名前空間を変更して、MvcMusicStore で始めます。 AccountController クラスでは MvcMusicStore.Controllers 名前空間を使用し、AccountModels クラスでは MvcMusicStore.Models 名前空間を使用する必要があります。
注: これらのファイルは、チュートリアルの冒頭でサイト デザイン ファイルをコピーした MvcMusicStore-Assets.zip ダウンロードでも使用できます。 メンバーシップ ファイルは Code ディレクトリにあります。
更新されたソリューションは次のようになります。
ASP.NET 構成サイトでの管理ユーザーの追加
Web サイトで承認が必要になる前に、アクセス権を持つユーザーを作成する必要があります。 ユーザーを作成する最も簡単な方法は、組み込みの ASP.NET Configuration Web サイトを使用することです。
ソリューション エクスプローラーのアイコンをクリックして、ASP.NET 構成 Web サイトを起動します。
これにより、構成 Web サイトが起動します。 ホーム画面の [セキュリティ] タブをクリックし、画面の中央にある [ロールを有効にする] リンクをクリックします。
[ロールの作成または管理] リンクをクリックします。
ロール名として「管理者」と入力し、[ロールの追加] ボタンを押します。
[戻る] ボタンをクリックし、左側の [ユーザーの作成] リンクをクリックします。
次の情報を使用して、左側のユーザー情報フィールドに入力します。
フィールド | 値 |
---|---|
ユーザー名 | 管理者 |
パスワード | |
パスワードの確認 | |
メール | (任意のメール アドレスが機能します) |
セキュリティ質問 | (好きなものは何でも) |
セキュリティの回答 | (好きなものは何でも) |
注:
- 前の表では、パスワードが省略されています。
- もちろん、任意のパスワードを使用できます。 既定のパスワード セキュリティ設定では、長さが 7 文字で、英数字以外の文字が 1 つ含まれているパスワードが必要です。
このユーザーの管理者ロールを選択し、[ユーザーの作成] ボタンをクリックします。
この時点で、ユーザーが正常に作成されたことを示すメッセージが表示されます。
ブラウザー ウィンドウを閉じることができるようになりました。
ロールベースの承認
これで、[Authorize] 属性を使用して StoreManagerController へのアクセスを制限し、ユーザーがクラス内のコントローラー アクションにアクセスするには管理者ロールに含まれている必要があることを指定できます。
[Authorize(Roles = "Administrator")]
public class StoreManagerController : Controller
{
// Controller code here
}
注: [Authorize] 属性は、特定のアクション メソッドと Controller クラス レベルに配置できます。
次に、/StoreManager を参照すると、[ログオン] ダイアログが表示されます。
新しい管理者アカウントでログオンすると、以前と同様にアルバム編集画面に移動できます。