1

しばらく前に、単純なログイン フォームを作成しました。このフォームはデータベースにアクセスし、ログオンしているユーザーの情報を取得します。今、私はこれを使用して行いましたglobal variables; それらがクライアント側ではなくサーバー側の変数であることを認識していません。たとえば、あるコンピューターにログオンすると、そのサイトを使用している他のすべてのユーザーが私としてログオンします。

だから私の質問はです。

A)グローバル変数をクライアント側に設定して、そのPCを使用している人だけが変数の変更の影響を受けるようにする方法はありますか.

B) グローバル変数を使用する代替手段はありますか? グローバル変数のように、ページ間でデータを渡すことができるようにします。

クエリ文字列を使用してみました。そして、彼らは働きますが。それらは、各ページを離れるたびに解析する必要があるため、私が見つけるのは少し面倒です。それらを新しいページに送信する必要があります。

4

2 に答える 2

2

ASP.NET のセッション状態は、ニーズに非常に適していると思います。もう 1 つの方法はCookieを使用することです。これは、特定のユーザーの情報をブラウザー セッション間で保持する必要がある場合に適したソリューションです。ただし、Cookie は機密情報 (パスワードなど) の保存には使用しないでください。

于 2013-03-01T18:21:21.617 に答える
1

ユーザーがログインしたときにデータベースから取得したすべてのユーザー情報を保持するクラスを作成します。

public class User {
   public string Name {get; set;}
   public int Id {get; set;}
}

ユーザー プロパティにアクセスするセッション レベルのプロパティを作成します。このプロパティは、User オブジェクトを参照する各ページに存在する必要があります。または、このプロパティを含むベース ページを作成することもできます。

public User CurrentUser
{
   get {
      if(Session["User"] == null)
         return null;

      return (User)Session["User"];
   }
   set {
      Session["User"] = value
   }
}

これで、このプロパティを参照するたびに、オブジェクトが null かどうかを確認するだけで済みます。null の場合、ログインしているユーザーはありません。

if(this.CurrentUser == null) {
   //no logged-in user
}
else {
   //the user is logged in
}
于 2013-03-01T18:35:54.630 に答える