asp.netマルチユーザーログインデータのランダムな文字列

C / Sプログラミングするために使用、しばしば便宜のために、グローバル変数を定義し、時間の関数の次の呼び出しは、まだ変数の値を取得することができ、私たちは多くの場合、グローバル変数の静的な型を定義します。
 
  しかし、今のB / S上のターンをプログラムし、悪い習慣を超える続く自然に来ます。毎回のログインページには、すべてのグローバル変数の定義の利用者の基本的な情報は、静的な型になります。その結果、我々は深刻な問題を発見しました。ジョー・スミスのユーザーがログインしている、それはジョー・スミス、ジョー・スミスとし、ユーザーレコードを追加する基本的な情報が表示されます。いつものように、リストの表示は、ジョー・スミスは、レコードの追加が完了していると述べ、記載された情報の結果は、ジョン・ドウがあります。これは神の馬です。
 
  理由は、ジョー・スミス、ユーザーがログオン後のゴーストのうち静的変数は、ジョン・ドウは一度、ログインサーバーの静的変数で、この時間値は、むしろ交換するジョー・スミス、ないジョン・ドウの名前よりも、再割り当てされていることです。ジョー・スミスが情報を追加した後、このように、リストのジョー・スミスのデータベースにそのデータを表示します。John Doeの情報が自然に表示されています。これは非常に奇妙に思えるかもしれませんが、実際には、asp.net操作機構の問題を意味します。
 
  asp.netは、すべてのユーザーが、これは多くの場合、歴史的なサイトを訪問した人の記録的な数に適用され、静的変数の同じ値を使用します。たびにもう一人のアクセスは、静的変数の値がインクリメントされます。サイトの履歴値が変更を表示するすべてのユーザーにも続きます。しかし、そうでない場合は、上記の問題があるだろう、ユーザログイングローバル変数を記録するために使用することはできません。リトル殺人グローバル変数は、大規模な潜在的なデータ漏洩を意味します。
 
  あなたはそれを達成するためにどのようにすることを、クライアントのエンドユーザーのページ・レベルのグローバル変数のためのB / Sを実現したい場合は?幸いなことに、従来のAspのSessionオブジェクトに加えて、それがより良いAsp.netのViewStateオブジェクトを提供します。ViewStateのオブジェクトは、様々な変数のページ、さらにはオブジェクトを格納するために使用されます。なぜその静的変数を使用するのではなく、ビューステートができますか?その理由は、サーバがViewStateのセッションので、ページレベルに相当し、それぞれのページに接続するために、各ユーザーのViewStateを作成することです。今回は安全にステージングの変数やオブジェクトにアクセスするためのViewStateの必要性を使用することができます。あなたはViewStateのを使用したい場合は、ASPXページ内のサーバー側のフォームタグ(<フォームにrunat =サーバー>)が存在する必要があります。

おすすめ

転載: www.cnblogs.com/zyh-C/p/10978997.html