エンタープライズ レベルの Java バックエンド アプリケーションを使用しており、トークン ベースのユーザー認証を組み込む必要があります。フロントエンドは PHP を利用し、SOAP を介して Java バックエンドと通信します。
問題を解決するために Guava の HashBiMap を使用することを考えました。UUID トークンをキーとして生成し、User オブジェクトを値として静的 HashBiMap に格納できるので、私にとっては便利です。ユーザーが最初に正常にログインすると、ユーザーは HashBiMap に追加され、ログイン応答で生成された UUID トークンが返されます。同じユーザーに対する後続の SOAP 要求は、トークンのみを使用して行われます。
私が今直面している問題は、これらのトークンが 30 分間非アクティブになった後に削除できるようにする何らかの削除ロジックが必要なことです。私の調査では、HashBiMapは Guava のMapMakerのようにエビクションをネイティブにサポートしていないようです。
HashBiMap をどのように使用し、非アクティブな場合の立ち退きをサポートするかについて、誰かに推奨事項はありますか? このアプローチが理想的でない場合、私は他の戦略を受け入れます。
アップデート:
HashBiMap を使用する必要があると思います。ユーザーがまだマップ内にある場合は、マップ内のユーザー オブジェクトを検索し、既存のトークンを取得できるようにしたいからです。たとえば、ユーザーが 30 分以内にブラウザーを閉じ、数分後に戻って再度ログインした場合、既存のトークンを返すことができるように、ユーザーがマップに既に存在するかどうかを確認する必要があります (技術的にはまだ有効です)。