web-dev-qa-db-ja.com

ユーザーがアプリに最後にアクセスした時間を保存することをお勧めします

JWT認証を使用すると、ユーザーは私のアプリを使用するたびにログインする必要がありません。

ユーザーが最後にアプリを使用/開いたときにDBに保存したいと思います。

技術的には、REST APIのセットがあり、各リクエストを監査して、現在のユーザーアクセスに対応するタイムスタンプをデータベースに保存できますが...リクエストごとに?!

ユーザーがリクエストを行うたびにデータベースを使用せずにこの情報を保存するための良い方法は何ですか?

3
Mik378

しきい値を設定できます。
たとえば、誰かが午後14:00に訪問したことを保存し、その時点と現在の時刻の差が30分を超えているかどうかを監査できるため、1時間あたり最大2回の更新があります。

ステートフルサービスがある場合、別のアプローチは、各リクエストの時間をメモリ(デフォルトのセッションドライバー、Redis、Memcacheなど)に保存することです。
こうすることで、ユーザーがアプリを離れたときを検出し、最後に1回だけ保存することができます。

更新:

別の方法は、たとえばJWTを使用する場合、APIトークンを使用してリクエストタイムスタンプを提供することです。そうでない場合でも、Cookieを送信するか、ユーザーのlocalStorageに保存することができます。次に、リクエストごとに最終アクセス時刻が送信され、データベースに触れることなく最初の提案を利用できます。

2
Ivan Batić

各メソッドがエントリの結果にアクセスするキューの使用を検討し、

  1. タイマージョブ
  2. キューの長さが特定のしきい値に達しています

キューをデータベースにフラッシュします。

2