リクエストからの情報を必要とする Spring Bean がありますが、コントローラーから直接呼び出されません (可能性はありますが、それなしでこれを試してみたいと思います)。
基本的に、私の API は倹約を介して他のサービスにリクエストを行います。リクエストを行うと、次のようなサービス コールがあります。
authenticationService.authenticate(null, "username", "password");
最初のパラメータ (the null
) は通常、リクエスト コンテキストの「プレースホルダ」インスタンスです。リクエスト コンテキストには、リクエストを行ったユーザー、元の IP などに関する情報が含まれています。このようにして、API インフラストラクチャがバックエンドに漏れることなく、元の呼び出し元に関するすべての詳細を取得できます。
ただし、これを行うにInvocationHandler
は、サービス インターフェイスのプロキシに対して行われたメソッド呼び出しをインターセプトする があります。そのプロキシ ハンドラーの内部にRequestContextFactory
は、RequestContext
. このファクトリー内で、リクエストから情報を取得する必要があります。特に、SecurityContext
ですので、電話をかけているユーザーを特定できます。
今、私は持っています:
@Provider
@Component
public class WebRequestContextFactory implements RequestContextFactory {
@Context private ContainerRequest containerRequest;
public RequestContext createRequestContext() {
}
}
残念ながら、containerRequest
常にnull
です。