「Remember Me」が設定されている場合、最終ログイン日を更新するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/681929

質問

ユーザーが私のサイトにログインすると、訪問日がデータベース (ユーザー テーブル) に記録されます。これは、(カスタム) メンバーシップ プロバイダーによって処理されます。ただし、ユーザーが「私を覚えていますか?」をチェックした場合オプションログインするとき、それらは(当然)後続の訪問でログインするように求められていません。この状況ではメンバーシッププロバイダーが使用されないため、データベース内の最終ログイン日は更新されません。

フォーム認証を使用して、物理的にログインしたときだけではなく、サイトに新たにアクセスするたびに最終ログイン日が更新されるようにするにはどうすればよいでしょうか?これを達成するために接続できるイベントはありますか?

開発中の Web サイトではセッション状態が完全に無効になっているため、セッション状態を使用できません (セッション モジュールが削除されています)。

ありがとう

役に立ちましたか?

解決

私はクッキーを使用しています(私はそううまくいく「私は覚えている」方法を見ることができない)と仮定しています。

ユーザーがログイン中は、(私がチェックされている場合に注意してください)2枚のクッキー、永久的なものを設定して、一時的なもの場合は(このセッションのみ)。第二は、ユーザーを認証するために使用するものです。

だから、ユーザーがログインする必要がありますページに、セッションクッキーを探します。見つかった場合は、通常通り継続します。見つからない場合は、のログの日付を設定し、セッションクッキーを設定し、見つかった場合は、利用者を見て、恒久的なクッキーを探します。 (永久的なクッキーが見つからない場合は、彼はちょうどログインしていません)。

他のヒント

ASP.NET 2.0について話していると仮定します(メンバーシッププロバイダーのコメントを考慮して)。

ユーザーを自動ログインする必要があるかどうかを確認するために Cookie をチェックする場合は常に、ユーザーのアクティビティ日付を更新するためにブール値を受け取るメンバーシップ プロバイダーの GetUser 関数を呼び出す必要があります。

ごとに MSDN ドキュメント:

MembershipProvider.GetUser メソッド

一意のユーザー識別子と、ユーザーが現在オンラインであることを示すためにユーザーの LastActivityDate 値を更新するかどうかを示すブール値を入力として受け取ります。GetUser メソッドは、指定されたユーザーのデータ ソースからの現在の値が設定された MembershipUser オブジェクトを返します。データ ソース内にユーザー名が見つからない場合、GetUser メソッドは null (Visual Basic では Nothing) を返します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top