サンプル コードのダウンロード
(aspnettips_LoginName.msi, 107 KB)
※このサンプルをお使いいただくためには、Visual Studio 2005 が必要です。
会員制サイトを開発する場合、現在ログインしているユーザーの名前を表示したり、ユーザーの状態によってログインページへのリンクやログアウト処理へのリンクを表示したりする機能が求められるケースがよくあります。それらの機能を従来の ASP.NET で実装することもできますが、データベースへアクセスして表示する値を取得するロジックと、それを表示するためのコントロールを準備する必要があるため、作成に手間がかかります。しかし、ASP.NET 2.0 で追加された LoginName コントロールや LoginStatus コントロールを使えば、これらの機能を簡単に実装することが可能です。
今回は、Status.aspx Web フォームを追加した状態から、その上にログインしているユーザーの名前と状態を表示する機能を実装します。なお、あらかじめ Web サイト管理ツールを使って、サイトへのアクセス方法を「インターネットから」に設定し、フォーム認証を有効にしておきます(Web.config を直接編集しても可)。
図1 今回作成するページ
今回は、次の手順でログイン中のユーザー情報表示機能を作成します。
-
LoginName コントロールの配置とプロパティ設定
-
LoginStatus コントロールの配置とプロパティ設定
-
Web.config の設定
-
実行
(1) LoginName コントロールの配置とプロパティ設定
最初に、LoginNameコントロールを配置します(図2)。このコントロールは、ユーザー名を表示するだけのシンプルなものです。ユーザー名を表示するときの書式は、FormatString プロパティで設定します。今回は、「ユーザー名:○○」という形にするため、「ユーザー名:{0}」と設定します({0} の部分には実際のユーザー名が入ります)。
図2 LoginName コントロール
図3 FormatString の設定
(2) LoginStatus コントロールの配置とプロパティ設定
次に、LoginStatus コントロールを配置します(図4)。このコントロールは、LoginName コントロールとよく似ていますが、ユーザーがログイン中の場合はログアウト処理へ移行するリンクを、ログアウト状態の場合はログインページへのリンクを表示します。ログアウト処理は、LogoutAction プロパティで選択可能(ページのリフレッシュ、ログインページへリダイレクト、任意のページへリダイレクトのいずれか)です。今回は、デフォルト(Refresh)のままにしておきます。
図4 LoginStatus コントロール
(3) Web.config の設定
LoginStatus が提供するログインページへのリンク先を定義するために、Web.config を編集します。ログインページは、forms ノードの loginUrl パラメータの値として定義をします。フォーム認証を有効にした状態では、<authentication mode="Forms" /> まで記述されているので、その子ノードとして <forms loginUrl="Default.aspx" /> を追加すれば OK です(リスト1)。
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
<authentication mode="Forms">
<forms loginUrl="Default.aspx" />
</authentication>
</system.web>
</configuration> |
リスト1
(4) 実行
以上で準備が整いました。最初に、ログインしていない状態で UserStatus.aspx を表示します。画面には、ログインページへのリンクのみが表示されます(図5)。
図5 未ログイン(ログアウト)状態
次に、あらかじめ設定したユーザー(ユーザー名「testUser」、パスワード「testUser01#」)でログインした状態から、UserStatus.aspx を表示します。「ユーザー名:testUser」とユーザー名が表示され、その右側にはログアウト処理のリンクが表示されます(図6)。
図6 ログイン状態