特集:クライアントステート管理、3つの手法:Visual Studio Magazine(8/9 ページ)
ASP.NET上でクライアント状態管理に用いる「セッション状態」「ビューステート」「クッキー」。この特集では、3つそれぞれにおける実践的なテクニックを解説する。
クッキーをクライアント状態の管理に利用する
最後に、クライアント状態を管理するテクニックとして、クッキーを考察していこう。
多くのWeb開発者は知らないだろうが、クッキーは良い標準規格ではない。しかしながら、すべての代表的なブラウザはクッキーをサポートし、Webアプリケーションの開発テクノロジーもまたクッキーを利用している。
ASP.NETは、2つの処理のためにクッキーを利用している。それは、「セッション状態」と「フォーム認証」だ。
セッション状態に関連するクッキーは、「.ASPXSession」となる。このクッキーは、セッションデータにリクエストを結びつけるために利用するSessionIDを格納する。一方、フォーム認証に関連するクッキーは、「.ASPXAUTH」だ。このクッキーは、暗号化された資格情報を格納する。資格情報は解読され、ユーザーが再認証されるときに用いられる。
Internet Explorerで[ツール]メニューの[インターネットオプション]を選択し、[インターネットオプション]ダイアログボックスを表示すると、システムに保存されているすべてのクッキーを確認できる。[全般]タブで[設定]ボタンをクリックし、[設定]ダイアログボックスを表示してほしい。そして[ファイルの表示]ボタンをクリックすると、エクスプローラで「Temporary Internet Files」フォルダがポップアップする。
その後、「種類」でソートして「テキスト文章」となっているものや、「名前」でソートして「Cookie」という名前のものがクッキーの実体だ。
クライアントがクッキーを利用することを保証できれば、クッキーは状態を管理する良い方法だと言えよう。クッキーには、文字列型(あるいは文字列に変換可能な型)であれば、「名前/値」の組み合わせで、値を保存できる。クッキーにおけるただひとつの制限は、格納できるデータの量だ。ほとんどのブラウザは、最大で4Kバイトのクッキー容量しか保存サポートしない。
ASP.NETにおけるクッキーの動きは単純だ。
たとえば、ユーザーがどのロールに属しているのかという情報を格納する場面で、クッキーを利用できる。リクエストのたびにユーザーのロールをデータベースから参照するのではなく、特定の「UserRolesクッキー」が存在しない場合にのみ、ユーザーのロールを参照する。そして、UserRolesクッキーを作成してユーザーが属するロールを加える。
後続するリクエストにおいては、単純にUserRolesクッキーを開き、ロールを抽出して、それをカレントユーザーが属するロールとして加えればよい(リスト1)。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Webサイトにおいて、ユーザーが属するロールを格納するためにクッキーを利用できる。リクエストのたびにユーザーのロールをデータベースから引っ張ってくるのではなく、特定の「UserRolesクッキー」が存在しない場合のみに、ユーザーのロールを引っ張ってくる。そしてUserRolesクッキーを作成して、ユーザーが属するロールを加える。その後、単純にUserRolesクッキーを開き、ロールを抽出して、それをカレントユーザーが属するロールとして加えればよい。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
© Copyright 2001-2005 Fawcette Technical Publications