0

JAX-RS Jersey で休憩サービスを開発しました。Tomcat 7.0 にデプロイしました。現在、Web サービスの URL をサード パーティのクライアントに公開しています。ホスト名、つまりサービスを使用しているクライアントホスト名の取得を含む検証メカニズムを配置したいと考えています。データベースに入力されたホスト名と一致させたいです。クライアントのホスト名を取得するには?

ここに私のweb.xmlがあります:

<servlet>
    <servlet-name>ServletAdaptor</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletAdaptor</servlet-name>
        <url-pattern>/intellixservices/*</url-pattern>
    </servlet-mapping>
    <filter>
        <filter-name>secureRESTFilter</filter-name>
        <filter-class>com.astroved.intellix.security.SecurityFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>secureRESTFilter</filter-name>
        <url-pattern>/intellixservices/*</url-pattern>
    </filter-mapping>

今、Filter を実装する SecurityFilter クラスを作成しています。doFilter() メソッド内 -

@Override
public void doFilter(ServletRequest req, ServletResponse res,
        FilterChain chain) throws IOException, ServletException {
    HttpServletRequest httpReq = (HttpServletRequest) req;
    HttpServletResponse httpRes = (HttpServletResponse)res;
    String url = "http://localhost:8888/IntellixWebApi/intellixservices/dnareport";
    System.out.println("In security filter");
    req.getRequestDispatcher(url).forward(req, res);    

    chain.doFilter(httpReq, httpRes);
}

しかし、次の URL への転送ではありません。クラスではResource、xml/json 型を返しています。

4

1 に答える 1

0

フィルターの使用を検討しましたか? これが良い設計になるかどうかはわかりませんが、使用して doFilter メソッドで値を取得request.getRemoteHost() request.getRemoteAddr()し、検証編集を行うことができます: プロキシの背後にあるクライアントについて忘れました.. このクライアントの IP アドレスの取得リンクが役立つ場合があります

于 2013-09-30T08:16:27.303 に答える