多くの開発者は、アプリケーションをWebに配信する前に、国家の概念を考慮しません。前述のように、Webは無国籍環境です。したがって、州が何であるかを議論し、問題を回避できる方法を理解する必要があります。
ステータスの正確な定義
シングルユーザープログラムでは、VBを使用して.exeファイルを作成するなどの実行可能アプリケーションを作成する場合、グローバル(またはパブリック)変数を宣言してから、コードのどこにでもアクセスできます。モーメント値は常に有効であり、アプリケーションが実行されている常にアクセスできます。
クライアントベースのアプリケーションがサーバーベースのデータベースエンジンにアクセスするシステムなど、従来のクライアント/サーバーソリューションの場合、各クライアントはサーバーおよびデータベースアプリケーションへの接続を確立します。この接続は通常、ユーザーを確認することで確立されます。
検証プロセスは、ユーザーを識別する典型的なプロセスであり、ユーザー名とパスワードの組み合わせを介して合法的なユーザーであるかどうかを証明します。
認証されると、クライアントとサーバーベースのアプリケーションとの間に接続が確立されます。これは、ユーザーがアプリケーションを使用している常に有効です。これは、ユーザーが発酵したWindows 2000サーバーに登録すると発生します。管理者がActive Directoryユーザーとコンピューターユーティリティ([スタート]メニューの管理ツールオプションでディレクトリ管理アイテムをクリックして)を使用してアクティブユーザー接続を観察するたびに。このプロセスは、Microsoft SQL Serverなど、多くのシステムで同じです。
この永続的な接続は、ユーザーが指示または要求をサーバーに送信すると、サーバーが各ユーザーを簡単に識別することを意味します。同じサーバーの応答またはその他のユーザー情報を直接ユーザーに返すこともできます。さらに、サーバーは、各顧客に関連する値と情報をより簡単に保存し、必要に応じて対応する顧客に提供できることに注意してください。もちろん、サーバーアプリケーションには、必要に応じてユーザーがアクセスできるメイングローバル変数があります。
各クライアントからの要求を識別し、メモリ内の関連するユーザーの値を保存するこの機能は、状態を構成します。状態は、ユーザーのアプリケーションの価値、環境、および内部変数を表し、アプリケーションとユーザー接続のプロセス全体を実行すると見なすことができます。
ステータスの重要性
独立したページのみを表示するWebサイトではなく、ユーザーと対話するWebサイトベースのアプリケーションを作成する場合は、ユーザーごとに個別のステータスを提供できる必要があります。これは、彼らの名前を覚えているだけかもしれませんし、各ユーザーのオブジェクト参照または異なるレコードセットを保存することもできます。これができない場合、ASP Webページはこれ以上実行できません。ページが実行されると、ページ内の変数やその他の関連情報が破壊されるためです。ユーザーが次のページを要求すると、このページで提供されるすべての情報が失われます。
したがって、各訪問者のステータスを保存する方法を見つける必要があります。すべてのユーザーにグローバルな価値を保存できることが非常に重要です。たとえば、各ユーザーに独自のカウンターを提供しないWebスタイルのアクセスまたはページクリックカウンターをクリックすると、ユーザーは通常、訪問者自身が訪問するだけでなく、訪問者の総数を確認したいと考えています。訪問者の数は、ユーザーレベルの状態ではなく、アプリケーションレベルの状態で保存する必要があります。
これは、商業サイトがウェブを占有していて、さらに早く存在している問題ではありません。そのため、状態をWebに保存するための多くの従来のソリューションがあります。 Webサイト管理者は、訪問者が以前にウェブサイトにアクセスしたことがあるかどうか、そしてもしそうなら、何回訪問したかを知りたいですか?また、他のWebサイトに定期的にアクセスしてください。これにより、広告の目標を設定する方が良くなります。これらのすべてには、アクセス中または各訪問の間にユーザーが生成したWebページリクエストに関する情報を保存する方法が必要です。
Webでステータスを作成します
ページリクエストとサイトアクセス間にステータスを提供する一般的な方法は、Cookieを使用することです。前の章で、クライアントのコンピューターに対応する値を保存する方法を見てきました。クライアントのコンピューターは、各ページリクエストと一緒にこのCookieに有効なドメインに送信されます。 ASPでCookieを確認および更新することにより、ある程度状態を維持することができます。付属の情報を使用して、ユーザーを識別し、ユーザーを保存された対応する値のセットに接続できます。
たとえば、ユーザーリクエストにサイト指定Cookieが含まれているかどうかを検出できます。含まれていない場合、ユーザーは特定のタイプのIDを割り当てられ、数字を指定し、長い有効期間のCookieに保存されます。ユーザーが将来このサイトにアクセスするたびに、彼はCookieを検出し、そこに含まれる情報を更新することができます。訪問数と期間に関するデータは、将来の使用のためにサーバーに収集および保存することもできます。
しかし、ユーザーが別のコンピューターに転送したり、Cookieを削除したり、ブラウザが送信されたCookieの受信を拒否した場合はどうなりますか?この場合、次回は多くのクッキーがあり、ほとんどの人が注意を払わずに受け入れるので、状態は維持できません。ブラウザでCookiesオプションを受け入れる前に警告を開いてから、いくつかの大きなサイトを歩き回ると、意味がわかります。
1。 匿名の訪問者と認可された訪問者
Cookieが少しずさんなソリューションであると思われる場合は、より簡単なアプローチを使用できます。多くのサイトが使用するアプローチの1つは、訪問者がサイトをクリックしたとき、またはIDの検証を必要とするページでログインダイアログをポップアップすることです。訪問者は、対応するサイトまたはページにアクセスできるように、最初に特定のタイプのユーザー名/パスワードの組み合わせを登録および取得する必要があります。
訪問者が既知の正当なユーザーであることを証明するために、訪問者のコンピューターに配置されたCookieは、詳細な登録データまたはIDが確認されたことを示すキーを保存します。同時に、訪問者の詳細なデータはサーバーに永久に保存され、再度アクセスするときに使用する準備ができています。訪問者がブラウザにそのようなCookieを持っている場合、検証されているため、ウェブサイトに自由にアクセスできます。
Cookieに有効期間がない場合(期限切れ)、ブラウザが閉じられているときにCookieの値が自動的に消え、次の訪問時に再登録および検証する必要があります。もちろん、Cookieの受け取りやCookieの削除を拒否した場合は、登録ダイアログをもう一度取得できます。このようにして、認識されていない場合、サイトにアクセスできません。
Windows 2000のセキュリティパフォーマンスは、自分のネットワークに登録するのと同じように、ユーザーに自分のネットワークに登録するのと同じようにWebサーバーに登録することを強制することにより、IISにより強力で安全な検証機能を提供します。ただし、これはInternet Explorer 3.0以上を使用してブラウザでのみ動作します。 IISは、基本的な検証を使用して、非ミクロソフトブラウザーがWebサーバーを登録できるようにすることもできます。
2。 これ以上匿名の訪問者はいません
IIS WebサーバーでASPを使用する場合、ユーザーがサイトを別のWebサイトに任せたり、ブラウザを閉じたりしない限り、ユーザーを現在のセッションで追跡できます。この章の後半では、この機能が訪問者を識別し、ユーザーのローカル情報を保存し、ステータスを提供するためにどのように使用されるかを確認します。以下は、すでに議論されているソリューションと比較して、それがどのように機能するかについての議論です。
ASPとIISは、ASPセッションオブジェクトを介して対話するユーザーセッションの概念を共同で提案しました。各訪問者は、サーバー上のASP Webページに最初にアクセスしたときに、セッションにセッション識別番号を割り当て、セッション識別子の特別な暗号化バージョンを追加します。
Cookieのパス(Cookie属性の説明については、前の章を参照)は、サーバーで実行されているASPアプリケーションのルートパスに設定されています。これは、デフォルトのWebサイトのルートディレクトリ(つまり / /)にある可能性がありますが、別の値でもあります(後で参照)。期限切れの値はCookieで提供されていないため、ブラウザが閉じているとCookie値が消えます。
このユーザーがこのASP Webページにアクセスするたびに、ASPはこのCookieを探します。 aspsessionidxxxxxxxxxxという名前で、各xはアルファベット順の文字です。第2章の図2-7に示すServerVariablesコレクションから、HTTPヘッダーで見ることができます。
ただし、このCookieはrequest.cookiesまたはresponse.cookiesコレクションには表示されません。 ASP Webページのリクエストごとに、ASPは値を表示する必要があります。このCookieに含まれる値は、ユーザーのセッションを示します。したがって、対応するセッションオブジェクトのコンテンツ(メモリで処理され、前のページリクエストプロセス中に動作するすべての値が常に含まれています)は、ASP Webページのスクリプトに引き渡すことができます。
もちろん、前述のように、クライアントブラウザがこれらのCookieを受信またはサポートしていない場合、この処理は失敗します。この場合、ASPセッションを作成することはできず、この訪問者のステータスは自動的に維持されません。