クイックスタートの例から Spring Social と Thymeleaf を使用して開発していますが、コントローラーごとに 1 つの Facebook オブジェクトしかサポートしていないことに気付きました。これは、サンプルが複数のユーザーをサポートできないことを意味し、変数の @Scope に関係していると推測しています。これは Spring ブート コンテナーで実行されます。各セッションが独自の Facebook オブジェクトを持つように構成するにはどうすればよいのでしょうか。
2 に答える
あなたが提案したように、Facebook オブジェクトはリクエスト スコープで構成する必要があります。構成サポートや Spring Boot を使用している場合は、リクエスト スコープになります。したがって、コントローラに Facebook インスタンスが 1 回挿入されたとしても、そのインスタンスは実際には、認証されたユーザーの要求時に作成される実際の FacebookTemplate インスタンスに委譲するプロキシです。
http://spring.io/guides/gs/accessing-facebook/の入門ガイドの例を参照しているとしか思えません。その場合、Spring Social で可能な最も単純な Spring Boot 自動構成を使用しています。これには、ユーザー ID として常に「匿名」を返す UserIdSource の基本的な (まだ実稼働用ではありません) 実装が含まれています。したがって、最初の Facebook 接続を作成した後、2 番目のブラウザーは「匿名」の接続を見つけようとし、それを見つけて、承認された Facebook オブジェクトを提供します。
これは奇妙に思えるかもしれませんが、これはあなたが始めることを意図したサンプルアプリです...そしてそれはそれを行います. 実際の UserIdSource を取得するために必要なことは、Spring Security をプロジェクトに追加することだけです。これにより、Spring Social の自動構成に、セキュリティ コンテキストから現在のユーザー ID を取得する UserIdSource を構成するように指示します。これは、Spring Social のより現実的な使用を反映していますが、明らかにより複雑で、入門ガイドの範囲を超えています。
ただし、Spring Boot 内の Spring Social のより完全な例については、https://github.com/spring-projects/spring-social-samples/tree/master/spring-social-showcase-bootを参照してください。