2009-07-06 6 views
1

웹 포털에 대한 시뮬레이션을 만들고 사용자 정의 HTTP 헤더를 추가해야합니다. 사용자가 이미 인증되었고 이러한 헤더는 사용자 정보 (예 : "test-header : role = user; oem = blahblah; id = 123;")를 저장하기위한 것으로 가정합니다.자바에서 사용자 정의 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 add-on과 같은 헤더를 추가하는 방법이 없습니까? 수정 헤더를 사용할 때 PHP 또는 java를 사용하여 모든 헤더를 인쇄 할 수 있으며 사용자 정의 헤더를 표시 할 수 있지만 getHeader() 메소드를 오버로드하는 것은 서블릿이 헤더를 가져 오기 전에 헤더를 첨부하는 것입니다. Java가 요청 헤더를 추가하는 방법을 알 수는 없지만 Oracle Access Manager와 같은 애플리케이션이 어떻게 수행하는지 궁금합니다. – ravun