UIのコードを春の安らかなapiから分離する予定です.Uiをさまざまなクライアント向けにカスタマイズしたいからです。私たちは残りのapiを持っており、ユーザー名とパスワードを認証します。実際に私のUIパッケージでは、私は春のRestTemplateで認証されたユーザを得るためにこのapiを呼び出すスプリングコントローラを持ち、結果に応じて適切なページを返します。認証APIはリクエストからのIPアドレスを使用し、間違ったユーザ名のパスワードを3回入力すると、そのIPアドレスを24時間ブロックします。しかし、この問題は、私のUIパッケージが配備されているサーバーのIPアドレスを取得し、呼び出し元が自分のUIサーバーであるという正しい動作であることを、このapiと呼ぶたびに発生します。私のUIパッケージで呼び出し元のIPアドレスを取得し、それを私のapiに行う要求に設定する方法はありますか? RestTemplateリクエストで実際の発信者のIPを設定する方法はありますか?あなたはのHttpServletRequestを使用してそれを行うことができます春に発信者のIPアドレスを送信する方法RestTemplate
0
A
答えて
1
、あなたのAPIメソッドは、のHttpServletRequest用に定義されたパラメータを持つ必要があります。
あなたのAPIメソッドは、次のようになります。
@RequestMapping(value = "/myApiPath", method = RequestMethod.GET)
public void myApiMethod(MyObject myobject, final HttpServletRequest request) throws IOException {
String ipAddress=getIpAddressOfRequest(request); // get Ip address
}
し、IPアドレスを取得するためのHttpServletRequestのリクエストを使用し、以下のように:
public static String getIpAddressOfRequest(final HttpServletRequest request) {
String remoteAddr = "";
if (request != null) {
remoteAddr = request.getHeader("X-FORWARDED-FOR");
if (remoteAddr == null || "".equals(remoteAddr)) {
remoteAddr = request.getRemoteAddr();
}
}
return remoteAddr;
}
とも、あなたは、ドメイン名にあなたの状態を持つことができます以下のコードを使用してサーバー名を取得します。
public static String getProtocolHostnameAndPort(final HttpServletRequest request) {
String protocol = request.getProtocol().split("/")[0].toLowerCase();
String hostname = request.getServerName();
int port = request.getServerPort();
StringBuilder result = new StringBuilder(protocol + "://" + hostname);
if (port != 80) {
result.append(":").append(port);
}
return result.toString();
}
関連する問題
- 1. 春の統合で送信者のIPアドレスを取得する方法は?
- 2. 送信前に送信者のアドレス許可を確認する方法
- 3. WSO2:発信者のIPアドレスをバックエンドに渡す
- 4. 送信者がビットコインを送信するアドレスを取得する方法
- 5. 電子メール受信者のIPアドレスを見つける方法
- 6. ボレー(アンドロイド)でIPアドレスにPOSTリクエストを送信する方法
- 7. ないIPアドレスの送信元アドレスは
- 8. 送信者名送信者アドレスとの差異Oracle SMTP
- 9. クライアントIPアドレスをAJAXリクエストデータとして送信する方法
- 10. 送信者アドレスとSMTPサーバーアドレス
- 11. phpmailerライブラリの送信者アドレスを設定する方法
- 12. 送信者Outlook/ExchangeのSMTPアドレスを取得する方法
- 13. asioでマルチキャスト送信者アドレスを見つける方法は?
- 14. Java RMIで発信IPアドレスを取得
- 15. Kubernetesの静的発信IPアドレス
- 16. 送信者名の代わりに送信者名を受信者名に設定する方法
- 17. node.jsでUDPメッセージを送信するときの送信元IPアドレスの変更
- 18. Azureロードバランサ - 送信元IPアドレスが悪い
- 19. TCPリクエストに対する返信の送信方法(春統合)?
- 20. XMPPアンドロイドとは別の送信者と受信者のアドレスを取得する方法はありますか?
- 21. SMTPエラー:送信者のアドレスは、ドメイン
- 22. TIdCommandにコマンドを送信したIPアドレスを取得する方法は?
- 23. BPMNのメッセージ送信者に返信をモデル化する方法
- 24. サイトの特定のIPアドレスにPHPスクリプトを送信する
- 25. Google Compute Engineで静的な送信/送信元IPアドレスを設定する
- 26. Gmail APIを使用してメール送信者のIPアドレスを取得する方法はありますか
- 27. アンドロイドからJSONデータをIPアドレス(192.168.2.1:80など)に送信する方法は?
- 28. IPアドレスを使用してメールを送信するには?
- 29. パケットが送信者から受信者に転送される方法
- 30. RestTemplateがUTF-8エンコーディングでmultipart/form-dataを送信する方法
迅速な返信をありがとう。実際にはUIとバックエンドの両方が別のサーバー上で動作しているので、ブラウザはUIパッケージでコントローラにリクエストを行い、コントローラはバックエンドパッケージのAPIに再度認証情報を投稿します。あなたの提案では、私はUIコントローラで実際のApiではなく、呼び出し元(ブラウザ)のIPを取得できます。バックエンドのApiでは、私のUIパッケージサーバーのIPを取得しました.3回間違ってログインしようとすると、実際に呼び出したIPをブロックする必要があります。 –