0

過去に単一ページの Web アプリケーションしか作成したことがありません。これらを使用すると、ユーザーが接続するとすぐに、Cookie に保存されているパスワード ハッシュを読み取り、それをデータベースに保存されている値と照合して、ユーザーが既にログインしているかどうかを判断します。

私は現在、複数の Web ページを含むサイトを作成したいと考えていますが、ユーザーが新しいページに移動するたびにデータベースにクエリを実行する必要があることに気付きました。これは私には非常に非効率的です。プロセスでデータベース/サーバーに負担をかけることなく、クライアントとの進行中のセッションを維持するためのより良い方法はありますか?

4

1 に答える 1

0

セッションオブジェクトの使用を見てみましょう。例:HttpContext.Session ["UserAuth"] = true;

ログインなどの最初のページでユーザーを認証すると、上記の例のようにセッションを作成できます。次に、次のページにリダイレクトしたら、セッションが実際に存在し、有効であるかどうかを確認します。

チェックセッション:

   if(HttpContext.Session["UserAuth"] != null)
   {
     if(HttpContxt.Session["UserAuth"].toString() == "true")
     {
        //Session is valid and user is logged in.
     }
     else{
       //Session is invalid and user is not logged in.
         }
   }

したがって、ユーザーが有効かどうかを確認する各ページで、上記の確認を行うことができます。データベース認証時に最初のページでセッションを作成している限り。

上記のコードは、これを行う方法を理解するためのものであることに注意してください。


「UserAuth」は、保存しているセッションに付ける名前です。それは絶対に何でもかまいません。この場合、セッションに保存している値は「true」です。

したがって、セッションの値を取得すると、単に「true」になります。これは、ユーザーがログインしていることを意味します。

たとえば、ユーザーをログアウトする場合、最初に作成したのと同じ方法で、セッション「UserAuth」の値をfalseに変更できます。

例えば

HttpContext.Session ["UserAuth"] = false;

于 2013-03-05T17:39:12.590 に答える