Bom dia, pessoal estou tendo a seguinte dificuldade:
tenho uma aplicação que foi desenvolvida em Struts 1 e outra desenvolvida em Jsf(rodando em servidores diferentes), na aplicação Struts tenho um link que redireciona para a app Jsf, contudo, preciso que o usuário que está logado na app Struts seja autenticado de forma transparente na app Jsf (existe um sistema a parte para autenticação) quando o mesmo acessar a app Jsf, lembrando que é o usuário é mesmo para as duas aplicações.
bom criei uma sevlet na aplicação Struts, onde pego os dados do usuário que está na sessão e envio para uma outra servlet (criada na app jsf) que recebe os mesmos e chama um metodo para autenticar o usuário, .
Sevlet na app Struts.
try {
// Creating the GetMethod instance
client = new HttpClient();
getMethod = new PostMethod(urlString);
getMethod.addParameter("email", email);
getMethod.addParameter("senha", senha);
getMethod.addParameter("perfil", perfil);
getMethod.addParameter("esfera", esfera);
request.setAttribute("perfilWrapper",perfilWrapper);
client.executeMethod(getMethod);//
response.sendRedirect("http://localhost:8081/sisppiviva-war");
}
Servlet na app Jsf
public void init(ServletConfig config) throws ServletException {
super.init(config);
sc = config.getServletContext();
LifecycleFactory lifecycleFactory = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
facesContextFactory = (FacesContextFactory) FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
lifecycle = lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String email = request.getParameter("email");
String senha = request.getParameter("senha");
String perfil = request.getParameter("perfil");
String esfera = request.getParameter("esfera");
try {
FacesContext context = facesContextFactory.getFacesContext(getServletContext(), request, response, lifecycle);
WebApplicationContext web = WebApplicationContextUtils.getWebApplicationContext(sc);
loginVisao = web.getBean(LoginVisao.class);
loginVisao.autenticar(email, senha, perfil, esfera);//este metodo foi sobrescrito para autenticar o usuário que vem da app Struts.
} catch (Exception e) {
request.getSession().invalidate();
Mensagens.addInfo(e.getMessage());
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
}
mas, quando acesso o link da app jsf, sempre me redireciona para a página de login e eu preciso que o usuário seja redirecionado para a página principal.