ASP.net Web サイトのすべての Web ページでコマンドに簡単にアクセスできる単一のグローバル変数を設定する方法を考えていました。
これはクラスを通じて行われますか?どうすればそれを呼び出すことができますか?
一意のユーザー ID を保持しているが、その ID をすべての Web ページの SQL クエリに使用できる例。
ASP.net Web サイトのすべての Web ページでコマンドに簡単にアクセスできる単一のグローバル変数を設定する方法を考えていました。
これはクラスを通じて行われますか?どうすればそれを呼び出すことができますか?
一意のユーザー ID を保持しているが、その ID をすべての Web ページの SQL クエリに使用できる例。
明らかな場所はSession
.
例えば
Session["MyId"] = 99; // to set it
と
myId = Session["MyId"]; // to get it
ただし、セッションが失敗することもあります。したがって、別の場所はCookieになります-機密データではないと仮定します..
// Setting a cookie
HttpCookie myCookie = new HttpCookie("MyID");
DateTime now = DateTime.Now;
// Set the cookie value.
myCookie.Value = now.ToString();
// Set the cookie expiration date.
myCookie.Expires = now.AddMinutes(1);
// Add the cookie.
Response.Cookies.Add(myCookie);
次の方法で Cookie を読み取ることができます。
HttpCookie myCookie = Request.Cookies["MyId"];
myId = myCookie.Value;
それは本当に特定のシナリオに依存します。さまざまな動作を可能にする幅広いオプションがあります。
通常、コマンドのパラメーターになる ID の場合、リンクを生成してページ間で伝達するときに、それらをクエリ文字列パラメーターとして含めます。つまり、ユーザーを編集するための管理ページがある場合、次のような URL を含むリンクのリストを生成できます。
/Users/Edit.aspx?userID=123
/Users/Edit.aspx?userID=789
現在のユーザーの ID については、認証メカニズムによって提供される必要があります。例 (認証方法によってシナリオが異なる場合があります): ASP.NET メンバーシップ: 現在のユーザー ID はどこに保存されていますか?
そこから、他のユーザーレベルの情報は、外部キーを介してユーザー ID に関連するテーブルにある可能性があります。
Session[] は、現在のユーザーの一時的な保存に適しています。一時的なものと見なすべき理由は、アプリケーション プールがリサイクルされると有効期限が切れるか失われるからです。その場合、ユーザーは再ログインして最初からやり直す必要があるため、通常は問題ありません。本当に重要なものを保存しないでください。
静的クラスと静的プロパティを使用して、システム全体の情報を保存できます。
最後の手段として、クッキーは避けます。私のアプリに含まれる Cookie は、認証フレームワークが自動的に作成するものだけであり、私はそれらに直接触れたことはありません。ユーザーまたはサード パーティによる Cookie の悪意のある操作に関して、考慮しなければならないシナリオは多数あります。