2009-07-06 3 views
1

Я пытаюсь создать симуляцию для нашего веб-портала и добавить пользовательские заголовки HTTP. Я предполагаю, что пользователь уже прошел аутентификацию, и эти заголовки предназначены только для хранения пользовательской информации (т. Е. «Test-header: role = user; oem = blahblah; id = 123;»).Добавление пользовательских HTTP-заголовков в java

Я установил фильтр для извлечения информации заголовка, но я не могу найти способ ввода информации заголовка. Они не хотят, чтобы они хранились в файлах cookie, и, возможно, они захотят настроить глобальный фильтр для включения заголовков на каждую страницу; возможно ли сделать что-то подобное с интерфейсом фильтра или любыми другими способами?

ответ

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

Смежные вопросы