ASP.NET Web Pages - WebSecurity オブジェクト

説明

WebSecurity オブジェクトは、ASP.NET Web Pages アプリケーションにセキュリティと認証を提供します。

WebSecurity オブジェクトを通じて、ユーザーアカウントの作成、ログイン、ログアウト、パスワードのリセットや変更などができます。

WebSecurity オブジェクトリファレンスマニュアル - 属性

属性 説明
CurrentUserId 現在のユーザーの ID を取得します。
CurrentUserName 現在のユーザーの名前を取得します。
HasUserId 現在のユーザーがユーザー ID を持つかどうかを示す値を取得します。もしない場合は、true を返します。
IsAuthenticated 現在のユーザーの認証状態を取得します。

WebSecurity オブジェクトリファレンスマニュアル - メソッド

属性 説明
ChangePassword() ユーザーのパスワードを変更します。
ConfirmAccount() アカウントの有効性を確認し、アカウントをアクティブにします。
CreateAccount() 新しいユーザーアカウントを作成します。
CreateUserAndAccount() 新しいユーザーアカウントを作成します。
GeneratePasswordResetToken() ユーザーにメールで送信できるパスワードリセットトークンを生成します。
GetCreateDate() 指定のメンバー資格アカウントの作成日付と時間を返します。
GetPasswordChangeDate() 指定のメンバー資格アカウントのパスワードを最後に変更した日付と時間を返します。
GetPasswordFailures
SinceLastSuccess()
最後の成功ログインまたはメンバー資格アカウントの作成以来、誤ったパスワード入力の回数を返します。
GetUserId() 指定ユーザー名に基づいてユーザー ID を返します。
GetUserIdFrom
PasswordResetToken ()
パスワードリセットトークンからユーザーIDを返します。
InitializeDatabaseConnection() ユーザー情報を含むデータベースに接続してメンバーシップシステムを初期化します。
IsAccountLockedOut() 指定のメンバーシップアカウントがパスワード試行回数が多すぎてロックされているかどうかを示します。
IsConfirmed() ユーザーが確認されているかどうかを示す値を返します。
IsCurrentUser() ログイン中のユーザーのユーザー名が指定ユーザー名と一致するかどうかを示す値を返します。
Login() ユーザーをログインします。
Logout() ユーザーをログアウトします。
RequireAuthenticatedUser() ユーザーが認証されていない場合は、HTTPステータスを401(未認証)に設定してください。
RequireRoles() 現在のユーザーが指定のロールに属していない場合は、HTTPステータスコードを401に設定してください。
RequireUser() 現在のユーザーが指定ユーザーでない場合は、HTTPステータスコードを401に設定してください。
ResetPassword() パスワードリセットトークンを使用してパスワードをリセットします。
UserExists() ユーザーが存在するか確認します。

技術データ

名称
Class WebMatrix.WebData.WebSecurity
Namespace WebMatrix.WebData
Assembly WebMatrix.WebData.dll

WebSecurityデータベースの初期化

WebSecurityオブジェクトを使用する前に、WebSecurityデータベースを作成または初期化する必要があります。

webのアプリケーションディレクトリ内で、_AppStart.cshtmlページを作成または編集します。

このファイルに以下のコードを記述します:

_AppStart.cshtml

@{
WebSecurity.InitializeDatabaseConnection("Users", "UserProfile", "UserId", "Email", 
true);
}

ウェブサイトが起動するたびに上記のコードが実行されます。それによりWebSecurityデータベースが初期化されます。

「Users」はWebSecurityデータベースの名前です。(Users.sdf)

「UserProfile」はユーザー設定情報を含むデータベーステーブルの名前です。

"UserId" はユーザーIDを含む列の名前(プライマリキー)です。

"Email" はユーザー名を含む列名です。

最後の引数 true は論理値で、ユーザープロファイルテーブルおよびメンバーシップテーブル(それらが存在しない場合)を作成するかどうかを示します。

ヒント:trueは自動的にデータベーステーブルが作成されることを示していますが、データベース自体は自動的に作成されません。存在する必要があります。

WebSecurity データベース

ユーザープロファイルテーブルの各レコードはユーザーを表しており、ユーザーID(プライマリキー)とユーザー名(メールアドレス)が含まれています:

UserId Email
1 john@johnson.net
2 peter@peterson.com
3 lars@larson.eut

メンバーシップテーブルにはメンバーシップ情報が含まれており、例えばユーザーがいつ作成されたか、メンバーシップを確認したかどうか(およびいつ)が含まれています。

こんな感じです(一部の列は省略されています):

UserId 作成日 確認
トークン
はず
確認
最後の
パスワードエラー
パスワード パスワード変更
1 12.04.2012 16:12:17 NULL True NULL AFNQhWfy.... 12.04.2012 16:12:17

注:すべての列とすべての内容を見たい場合は、WebMatrixを通じてデータベースを開き、各テーブルを確認してください。

シンプルメンバー資格設定

サイトが ASP.NET Web Pages メンバー資格システム SimpleMembershipを使用していない場合、WebSecurity オブジェクトを使用するとエラーが発生する可能性があります。

ホストプロバイダーの設定がローカルサーバーと異なる場合、エラーが発生します。この問題を解決するために、サイトの Web.config ファイルに以下の要素を追加してください:

<appSettings> 
<add key="enableSimpleMembership" value="true" /> 
</appSettings>