5

アプリケーションの認証と承認に Spring セキュリティを使用しています。バックエンドとして Neo4j データベースを使用し、認証用に userDetailsS​​ervice を実装しています。

ただし、アプリケーションを再起動するたびに、ユーザーは再度ログインする必要があります。これを克服するために、セッション情報を redis データベースに保存し、アプリケーションが起動するたびにデータを Spring セキュリティ コンテキストにロードすることを考えています。

同じことを実装するための記事やポインタがある場合は、親切に伝えてください。

次の実装を考えています。1)認証が成功するたびに、ユーザーの詳細とセッションの詳細をredisに保存します。これは、UserDetailsS​​ervice 実装の loadUserByUsername() メソッドで実装する必要があります 2) ユーザーがログアウトするたびに、redis からデータを削除します。この情報はどこで確認できますか? これを呼び出すことができるスプリング セキュリティ関数はありますか?

情報が不足している場合はお知らせください。

4

4 に答える 4

2

あなたがする必要があるのは、

  • Reds へのセキュリティ コンテキスト ストレージを処理する SecurityContextRepository
  • 最終的に、セッション情報を取得/保存するカスタム フィルター (GenericFilterBean)

標準フィルターに別のリポジトリを与えることは可能だと思いますが、よくわかりません。とにかく独自の実装が必要でした...

于 2014-10-14T14:31:05.217 に答える
1

Spring Security の記憶機能を設定する必要があります。

Remember-me または永続的なログイン認証とは、Web サイトがセッション間でプリンシパルの ID を記憶できることを指します。これは通常、Cookie をブラウザに送信することで実現されます。この Cookie は今後のセッションで検出され、自動ログインが行われます。Spring Security は、これらの操作を実行するために必要なフックを提供し、2 つの具体的な記憶の実装を備えています。1 つはハッシュを使用して Cookie ベースのトークンのセキュリティを維持し、もう 1 つはデータベースまたはその他の永続的なストレージ メカニズムを使用して、生成されたトークンを保存します

詳細については、Spring Security のドキュメントを参照してください: http://static.springsource.org/spring-security/site/docs/3.1.x/reference/remember-me.html

すぐに使用できる実装を使用するか、独自の (前述の redis) を挿入できます。

于 2012-11-04T09:13:21.567 に答える
0

Luke Taylor が言ったように、Tomcat のデフォルト アクションは、コンテナーの再起動時にセッションをシリアル化/逆シリアル化することです。 ここ

標準マネージャーの pathname 属性は、シリアル化ファイルの名前です。パス名属性を指定しない場合、デフォルトは SESSIONS.SER です。再起動時にセッションを戻したくない場合は、空の文字列値として指定する必要があります。

于 2013-11-27T16:01:58.260 に答える