0

ログインしているユーザーを長時間維持するためのコーディング方法を知りたいです。現在、ユーザー認証とログステータスの維持のために、マスターページでセッションを使用していますが、セッションが短時間で期限切れになります。gmail、facebbok、stackoverflow などの多くのサイトを見てきました。ユーザーがログインすると、再度ログインしなくても数回サイトにアクセスできます。

4

3 に答える 3

1

サイトの訪問者が週に数百人しかいない場合は、セッションのタイムアウトを増やすだけで十分です。

サイトが少し混雑している場合、セッション タイムアウトを増やすと、特にセッションに多くのデータを保存する場合に、他の用途に使用できるメモリが大量に使用されます。セッションが機能し、ログイン状態を維持するには、ユーザーのブラウザに設定された Cookie のセッション トークンと一致するセッションが存在する必要があります。

セッションが期限切れになる正当な理由の 1 つは、二度と戻ってこないサイトの訪問者や、とにかくセッションを必要としない検索エンジン ボットに属する、メモリを消費するセッションを取り除くことです。

この問題を補うために、Facebook や Google などのサイトでは、ハッシュ化された長いトークンがブラウザーの Cookie に保存されます。このトークン (またはそのハッシュ化されたバージョン) をサーバーに保存し、それをユーザー アカウントに関連付けます。そのため、サーバーに戻ったときにそれがあなたであることを認識し、新しいセッションを作成できます (FB/Google がセッションを使用すると仮定)。 )。

つまり、要約すると、ランダムなテキストの長い文字列を含む Cookie を生成します (SSL などを使用している場合は、ドメインが制限されていて安全であることを確認してください)。そのランダムなテキスト (またはそのハッシュ) を、それが属するユーザー ID と共にデータベースに保存します。そのユーザーがサイトにアクセスし、セッションが作成されていないたびに、その Cookie の値をデータベースと比較し、行の 1 つと一致する場合は、ユーザーをログインさせます。

それが役立つことを願っています。

于 2013-07-05T05:51:18.883 に答える
0

セッション状態のタイムアウト プロパティは分単位で示されます。

webconfigファイルで...

<system.web>
.......
<sessionState timeout="1440"></sessionState>

</system.web>

Web フォームが 24 時間連続してアイドル状態の場合、セッションは期限切れになります。

このセッション状態ブロックは、

  <system.web>

詳細については、 http://msdn2.microsoft.com/en-us/library/h6bb9cz9%28vs.80%29.aspxを参照してください。

于 2013-07-05T05:39:34.790 に答える