Как передать конфиденциальные данные из HttpServlet в управляемый компонент JSF - PullRequest
0 голосов
/ 19 сентября 2019

Я работаю над старым приложением, в котором мы используем HttpServlet в качестве службы и передаем данные (для нас это как идентификатор сеанса) в качестве параметра.Позже мы читаем этот параметр в классе ManagedBean.В настоящее время эти классы выглядят следующим образом.

public class MyServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @EJB private MySessionGenerator mySessionGenerator;

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException {
        String sessionID = mySessionGenerator.getData();
        String url = "serverUrl/myPage.jsf?id=" + sessionID;

        response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
        response.setHeader("Location", url);
    }
}
@ManagedBean
@ViewScoped
public class BeanA implements Serializable {

    private String sessionID;

    @PostConstruct
    public void init() {
        this.sessionID = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");
        // do other stuff
    }

    public void sentAndRedirect() {
        // do some operations with external services

        String newUrl = "myPageB.jsf?id=" + this.sessionID;
        FacesContext fc = FacesContext.getCurrentInstance();
        fc.getApplication().getNavigationHandler().handleNavigation(fc, null, newUrl);
    }
}
@ManagedBean
@ViewScoped
public class BeanB implements Serializable {

    private String sessionID;

    @PostConstruct
    public void init() {
        this.sessionID = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");
        // do other stuff
    }
}

Вопрос в том, как мы должны изменить его, чтобы иметь представление о значении sessionID, но не отображать его в URL и не смешиватьсеансы?

Я пытался передать этот sessionID как атрибут HttpServletRequest, а затем получить его, но он не работал.Полученный атрибут всегда был нулевым, независимо от того, пытался ли я установить атрибут для сеанса запроса или для самого запроса.

Буду признателен за помощь в решении этой проблемы.

...