2009-07-06 25 views
1

私はWeb Portalのシミュレーションを作成しようとしており、カスタムHTTPヘッダーを追加する必要があります。私は、ユーザーがすでに認証されていると仮定し、これらのヘッダーはユーザー情報(つまり、 "test-header:role = user; oem = blahblah; id = 123;")を格納するためのものです。JavaでカスタムHTTPヘッダーを追加する

ヘッダー情報を抽出するためのフィルターをセットアップしましたが、ヘッダー情報を挿入する方法が見つかりません。彼らはそれがクッキーに保存されることを望んでおらず、ヘッダーをすべてのページに含めるためにグローバルフィルターを設定したいと思うかもしれません。フィルタインターフェイスや他の方法でこれを行うことは可能ですか?

答えて

1

たぶん、あなたはセッションで、その情報を格納することができます:


import java.io.IOException; 

import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* @author rodrigoap 
* 
*/ 
public class UserInfoFilter implements Filter { 

    /** 
    * @see javax.servlet.Filter#destroy() 
    */ 
    public void destroy() { 
     // TODO 
    } 

    /** 
    * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, 
    *  javax.servlet.ServletResponse, javax.servlet.FilterChain) 
    */ 
    public void doFilter(ServletRequest request, ServletResponse response, 
      FilterChain filterChain) throws IOException, ServletException { 
     if (!(request instanceof HttpServletRequest)) 
      throw new ServletException("Can only process HttpServletRequest"); 
     if (!(response instanceof HttpServletResponse)) 
      throw new ServletException("Can only process HttpServletResponse"); 
     HttpServletRequest httpRequest = (HttpServletRequest) request; 
     HttpServletResponse httpResponse = (HttpServletResponse) response; 

     httpRequest.getSession().setAttribute("role", "user"); 
     httpRequest.getSession().setAttribute("id", "123"); 
       filterChain.doFilter(request, response); 
    } 

    /** 
    * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) 
    */ 
    public void init(FilterConfig filterConfig) throws ServletException { 
     // TODO 
    } 

}
0

addHeaderを使用できます。

+0

私はポスターは要求ではなく、レスポンスにヘッダを追加したいと考えています。 – Justin

0

HttpServletRequestWrapperを利用して、さまざまなgetHeader *メソッドが呼び出されたときにカスタムヘッダーを指定する必要があります。

+0

これは実際にリクエストにヘッダーを追加しませんか? getHeaders()呼び出しでそれらを提供するだけです。 firefoxのModify Headersアドオンのようにヘッダーを追加する方法はありませんか?修正ヘッダーを使用する場合は、PHPまたはjavaを使用してすべてのヘッダーを印刷できますが、カスタムヘッダーが表示されますが、getHeader()メソッドのオーバーロードはサーブレットが取得する前にヘッダーを付加することです。 Javaが要求ヘッダーを追加する方法はわかりませんが、Oracle Access Managerのようなアプリケーションがどのように機能するのだろうと思います。 – ravun

関連する問題