【T9a】簡易ブログソフトウェアの作成 Part.Ⅰ ~ 認証機能の組み込み(7/14)
プロジェクトタイプ | ASP.NET Core Web アプリ(Model-View-Controller) |
---|---|
プロジェクト名 | T9a |
ソリューション名 | PIT9 |
ターゲットフレームワーク | .NET 8.0(長期的なサポート) |
最上位レベルのステートメントを使用しない | 使用する(チェックオフ) |
注意
- 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.
- 先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと.
- プロジェクトの作成作業については準備作業を参照せよ.
9a-7. アカウント管理用コントローラーの設計
次にアカウント関連のための操作のためのコントローラーAccounts
コントローラーを作成しよう.
このコントローラーは前章で登場したAdmin
コントローラーと異なり,ログイン/ログアウトの
機能だけではなく,ユーザーの作成/ユーザー情報の編集/削除といった機能も持つ.
このコントローラーは「管理者ユーザー」でアクセスしたときと,「通常ユーザー」でアクセスしたときで 利用可能な機能や画面構成・画面遷移が微妙に異なる.「管理者ユーザー」はユーザーの作成や,ほかのユーザー情報の編集, 削除を行うことができるが,「通常ユーザー」は自分自身のユーザー情報の編集,削除(≒退会)しか行えないためである.
「管理者ユーザー」でアクセスした場合の画面イメージと画面遷移を_に示す.
ログイン/ログアウトのためのリンクやボタンは前章と同じようにすべてのページに表示することにする. _に対して「通常ユーザー」でアクセスした場合の画面イメージと画面遷移を _に示す.
「通常ユーザー」と「管理者ユーザー」の差異は,以下の4点である.
- ログイン直後の遷移先
- 「管理者ユーザー」→ユーザー一覧画面(
Index
) - 「通常ユーザー」→そのユーザーの詳細情報画面(
UserDetails
)
- 「管理者ユーザー」→ユーザー一覧画面(
- アクセス許可
- 「管理者ユーザー」→ユーザーの追加画面(
AddUser
)とユーザーの一覧画面(Index
)にアクセスできる1. - 「通常ユーザー」→上記の2つの画面にアクセスできない.
- 「管理者ユーザー」→ユーザーの追加画面(
- ユーザー情報の編集画面(
EditUser
)- 「管理者ユーザー」→
- 「通常ユーザー」の編集時:「新しいパスワード」(と確認)を入力するだけでパスワードを再設定できる.
- 「管理者ユーザー」の編集時:ユーザー名を変更できない.
- 「通常ユーザー」→「現在のパスワード」と「新しいパスワード」の両方を入力しないとパスワードを再設定できない.
- 「管理者ユーザー」→
- ユーザーの削除画面(
DeleteUser
)- 「管理者ユーザー」→「ユーザー ○○ を削除しますか?」とだけ表示される.
- 「通常ユーザー」→上記に加えて作成したすべての記事が削除されるという旨の警告が表示される.
最終的に作成するAccounts
コントローラーのアクションと,その権限/HTTPメソッドごとの機能を_にまとめる.
アクション | 権限 | GET メソッドでアクセスした際の機能 | POST メソッドでアクセスした際の機能 |
---|---|---|---|
Index | 管理者ユーザー | ユーザー一覧の表示 | (なし) |
通常ユーザー | (アクセスできない) | (なし) | |
匿名ユーザー | (アクセスできない) | (なし) | |
対応リスト :リスト9a-9-1(20~28行目) | 対応リスト : - | ||
Login | 管理者ユーザー | ログインフォームの表示 | ログイン処理 |
通常ユーザー | ログインフォームの表示 | ログイン処理 | |
匿名ユーザー | ログインフォームの表示 | ログイン処理 | |
対応リスト :リスト9a-9-1(30~34行目) | 対応リスト :リスト9a-9-1(36~57行目) | ||
Logout | 管理者ユーザー | (なし) | ログアウト処理 |
通常ユーザー | (なし) | ログアウト処理 | |
匿名ユーザー | (なし) | ログアウト処理 | |
対応リスト :- | 対応リスト :リスト9a-9-1(73~81行目) | ||
LoginRoute | 管理者ユーザー | ログイン後の遷移先の振り分け(後述) | (なし) |
通常ユーザー | ログイン後の遷移先の振り分け(後述) | (なし) | |
匿名ユーザー | (アクセスできない) | (なし) | |
対応リスト :リスト9a-12-3 | 対応リスト : - | ||
UserDetails | 管理者ユーザー | 任意のユーザーのユーザー情報の表示 | (なし) |
通常ユーザー | 自身のユーザー情報の表示 | (なし) | |
匿名ユーザー | (アクセスできない) | (なし) | |
対応リスト :リスト9a-12-1 | 対応リスト :- | ||
AddUser | 管理者ユーザー | ユーザーの新規登録フォームの表示 | ユーザーの新規登録処理 |
通常ユーザー | (アクセスできない) | (アクセスできない) | |
匿名ユーザー | (アクセスできない) | (アクセスできない) | |
対応リスト :リスト9a-10-2 | 対応リスト:リスト9a-12-4 | ||
EditUser | 管理者ユーザー | 任意のユーザーのユーザー情報の編集フォームの表示 | ユーザー情報の更新処理 |
通常ユーザー | 自身のユーザー情報の編集フォームの表示 | ユーザー情報の更新処理 | |
匿名ユーザー | (アクセスできない) | (アクセスできない) | |
対応リスト :リスト9a-13-2 | 対応リスト :リスト9a-13-3 | ||
DeleteUser | 管理者ユーザー | 任意の通常ユーザーの削除フォームの表示 | ユーザーの削除処理 |
通常ユーザー | 自身のユーザー情報の削除フォームの表示 | ユーザーの削除処理 | |
匿名ユーザー | (アクセスできない) | (アクセスできない) | |
対応リスト :リスト9a-14-1 | 対応リスト :リスト9a-14-2 | ||
AccessDenied | 管理者ユーザー | アクセス拒否の表示 | (なし) |
通常ユーザー | アクセス拒否の表示 | (なし) | |
匿名ユーザー | アクセス拒否の表示 | (なし) | |
対応リスト :リスト9a-9-1(83~87行目) | 対応リスト :- |
ただし「管理者ユーザー」は自分自身のユーザー情報の編集や削除はできない.これらを行えるのは「通常ユーザー」に対してのみである. ↩︎