ステップ 7 ハンズオン: ASP.NET 2.0 メンバーシップとロールの管理 その 3

認証ユーザーのための Login コントロールの利用


グローバル ナレッジ ネットワーク株式会社
ナレッジ ソリューション本部 鈴木和久

最終更新日: 2005 年 10 月 28 日

目標
ASP.NET 2.0 の Login コントロールを利用した認証ページの実装
使用技術
  • ASP.NET 2.0
  • Visual Basic 2005
取り上げるトピックス
  • ASP.NET 2.0 を利用した Login コントロールの利用方法
前提知識
目次
まとめ
ASP.NET 2.0 では Forms 認証を行う際のユーザー登録用のデータベースがあらかじめ用意されています。このデータベースと Login コントロールを利用したページを実装することで、ほとんどコーディングすることなく、セキュリティ サイトを構築できます。 
備考
 

認証ユーザーのための Login コントロールの利用

ここでは、その 2で作成したサイトに、認証されたユーザーのためのサービスを提供するページを実装します。

その 2 で作成した Default.aspx をデザイン ビューで開きます。

LoginView の LoginView タスク メニューの Views を [LoggedInTemplate] に切り替えて、認証済みのユーザーに表示するためのメッセージを定義します。
Panel コントロールを配置してサイズを調整できるようにします。  

LoginViewコントロール配置 画面 

Panel 内に 「あなたは   としてログインしています。」 のメッセージを編集し、空白の箇所には Login タブから LoginName コントロールを配置します。LoginName コントロールは認証時に使用したユーザ名を表示するコントロールです。

標準タブから HyperLink コントロールを配置し、Text プロパティを 「メンバーサイトへ」 とします。

さらに、HyperLin kコントロールを配置し、Text プロパティを 「パスワードの変更」 とします。パスワード変更用のページを指定するために、HyperLink コントロールの NavigateUrl プロパティを ChangePassword.aspx とします。このページは後のステップで作成します。

LoginView 定義 画面 1  

 

Login タブから LoginStatus コントロールを配置し、LoginStatus タスク  メニューの Views を [ログイン中] に設定します。
この設定によって、LoginStatus コントロールの表示が 「ログアウト」 に切り替わり、ログイン中のユーザーがサイトからログアウトできるようになります。 

LoginView 定義 画面 2 

   

ChangePassword.aspx としてパスワードを変更するための Web フォームをプロジェクトに追加します。

このページに Login タブの ChangePassword コントロールを配置します。パスワードの変更が成功した際に、[続行] ボタンをクリックした時にリダイレクトするページを指定するため、このコントロールの ContinueDestinationPageUrl を Default.aspx に設定します。 

 ChangePassword コントロール配置 画面

認証されたユーザーだけがアクセスできる専用のページを格納する、Members という新しいフォルダを作成ます。

このフォルダ内に Webcome.aspx として、テスト用のページを新規に追加します。

その後、Default.aspx の LoginView コントロール内に配置した 「メンバーサイトへ」 の HyperLink コントロールの NavigateUrl プロパティを Members フォルダの Welcome.aspx に指定します。

   メンバー専用ページ

Members フォルダを指定して、 [Web サイト] - [新しい項目の追加] から [Web 構成ファイル] を選び、Members フォルダ内に Web.config ファイルを追加します。 この Web フォルダには Visitors ロールメンバーのみがアクセスできるように以下のような設定を行います。

Members / Web.config ファイル

<system.web> 
   <authorization> 
      <allow roles="Visitors"/> 
      <deny users="?"/> 
      </authorization> 
 </system.web>

 

動作確認用に Webcome.aspx に Label コントロールと ListBox コントロールを配置します。Label コントロール名を lblUserName と定義します。
Webcome.aspx のページロード イベントハンドラを利用して、Label コントロールにはユーザ名を、ListBox にはユーザーが所属するロール名を表示します。

Welcome.aspx.vb の Page_Load イベント ハンドラ

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
      
      'Membership クラスからユーザー名を取得する 
      Dim userName As String = Membership.GetUser.UserName 
      lblUserName.Text = userName 

      ' ユーザーは複数のロールに所属できるので、Roles クラスの 
      ' GetRolsForUser メソッドはユーザーが所属するロールを配列として返す。 
      ListBox1.DataSource = Roles.GetRolesForUser(userName) 
      ListBox1.DataBind( )

End Sub

許可されたロールに所属するユーザーは Members フォルダのページにアクセスでき、それ以外のユーザーはページにアクセスできないことが確認できます。 

 メンバー専用ページへのアクセス確認 画面

まとめ

以上のように、ASP.NET 2.0 ではメンバーシップやロールなどのセキュリティに関するページの機能は、Login コントロールを使用することで容易に実装することができます。

Top of Pageトップページヘ