ASP.NETのフォーム認証を使う方法を紹介します。
Web.configのsystem.webセクション内に以下のauthenticatoinセクションを記述します。
<authentication mode="Forms">
<forms loginUrl="Login.aspx" timeout="10">
<credentials passwordFormat="Clear">
<user name="penguin" password="PASSWORD"/>
<user name="bear" password="HIMITSU"/>
<user name="duck" password="NAISYO"/>
</credentials>
</forms>
</authentication>
解説
loginUrlにログイン認証用のWebフォームを指定し、timeoutにログインチケットの有効期間を分で設定します。上記の場合はチケットが10分間有効になります。
<forms loginUrl="Login.aspx" timeout="10">
credentialsタグにパスワード形式を指定します。今回は"Clear"を指定し平文パスワードを指定します。(passwordFormatには"MD5","SHA1"を指定できます。)
<credentials passwordFormat="Clear">
credentialsタグ内にフォーム認証でログインできるユーザー名とパスワードを記述します。
<user name="penguin" password="PASSWORD"/>
<user name="bear" password="HIMITSU"/>
<user name="duck" password="NAISYO"/>
匿名ユーザーのアクセス禁止
Web.configのsystem.webセクション内に以下のauthorizationセクションを記述します。
<authorization>
<deny users ="?" />
<allow users = "*" />
</authorization>
この記述により匿名ユーザーのアクセスを禁止します。
認証フォームの実装
認証フォームを実装します。Webフォームを新規作成し、テキストボックス2つ(TextBoxUser, TextBoxPass)とボタン1つとラベル1つを配置します。
ButtonコントロールのClickイベントに以下のコードを記述します。
コード
protected void Button1_Click(object sender, EventArgs e)
{
if (FormsAuthentication.Authenticate(TextBoxUser.Text, TextBoxPass.Text)) {
FormsAuthentication.RedirectFromLoginPage(TextBoxUser.Text, false);
//Server.Transfer("Default.aspx");
}
else {
LabelMsg.Text = "失敗しました。パスワードを確認してください";
LabelMsg.Visible = true;
}
}
解説
で入力されたユーザー名とパスワードがあっているかの検証をします。ユーザー名とパスワードが一致していれば、
FormsAuthentication.Authenticate(TextBoxUser.Text, TextBoxPass.Text)
Default.aspxへリダイレクトします。今回は、認証情報をCookieに保存しないためRedirectFromLoginPageメソッドの第二引数をfalseにしました。
FormsAuthentication.RedirectFromLoginPage(TextBoxUser.Text, false);
入力したユーザー名とパスワードが誤っている場合は、以下のコードによりパスワードが誤っている旨のメッセージを表示します。
LabelMsg.Text = "失敗しました。パスワードを確認してください";
LabelMsg.Visible = true;
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-06
作成日: 2011-08-04