メンバーシップフレームワーク
メンバーシップフレームワーク
メンバーシップフレームワークとは、asp.netによるログイン認証機能のフレームワーク。
メンバーシッププロバイダークラス
認証機能を持つメンバーシッププロバイダークラスをModelフォルダ内に実装する。
MembershipProviderクラスを継承したCustomMembershipProviderクラスを作成し、抽象メソッドを実装する
ユーザー名とパスワードを受け取り正しいかをbool型で返すメソッドValidateUser()を実装する
認可を表すロールプロバイダークラスCustomRoleProviderクラスを実装する。
RoleProviderクラスを継承し、抽象メソッドを実装する。
GetRolesForUser()
指定されたユーザーが持つロールをstring[]型で返すメソッド
IsUserInRole()
引数で与えられたユーザーが、引数で与えられたロールの権限を所持しているかbool型で返すメソッド
LoginViewModeloの作成
ViewModelとは、実際のデータベースに登録されているデータと画面上でのみ用いるデータの差異を解消するためのデータトランスファークラスを指す。
ユーザー名とパスワードを入力するログイン画面を構成する。
それぞれ必須項目であるため[Required]を設定する。
また、パスワードは[DataType(DataType.Password)]とすることで入力文字を*********形式で表示させる。
LoginController
LoginViewModelクラスから受け取ったユーザー名、パスワードを処理するコントローラークラスを実装する。
[AllowAnonymous]によりログイン認証前にアクセスできるように設定する。
ログイン認証のメソッドを持つCustomMembershipProviderクラスのインスタンスを生成する。
ログイン情報が入力されたとき(POST)を処理する。
CSRF対策として、[ValidateAntiFogeryToken]アノテーションを付加する。
また、入力情報に対して、ValidateUser()を用いてユーザー名とパスワードが正しいかチェックする。
正しい場合、FormsAuthentication.SetAuthCookie()を用いる。
指定したユーザー名に対して、認証チケットを発行しCookieに保存する。
Login用のView
Login用のViewを作成し、ログイン失敗時のエラーメッセージをViewBagで表示する。
共通レイアウトにログイン時にサインアウトできるようリンクを設定する。
Request.IsAuthentificated:ログインしているとき、はtrueの状態になる。ログインしていないとき、falseの状態になる。
@Html.ActionLink("表示名", "アクションメソッド", "コントローラ名")
コントローラ名のアクションメソッドへ遷移する。
Authorizeを設定することでTodoesControllerにはサインインしている状態ではないとアクセスできなくなる。