1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

cookie com jsf e glassfish não funciona

Estou tentando trabalhar com cookies em uma aplicação JSF e GlassFish4, eu estou conseguindo inserir os cookies, vejo eles no browser, mas não consigo pega-los.

Segue o código:

Código que insere o cookie:

public static void createCookieHelper(String nameCookie, String valueCookie, Integer maxAge) {
    FacesContext context = FacesContext.getCurrentInstance();
    if (context != null) {
        HttpSession sessao = (HttpSession) context.getExternalContext().getSession(true);

        //Cria cookie  
        Cookie ck = new Cookie(nameCookie, valueCookie);
        ck.setMaxAge(maxAge); //Apos este tempo, em segundos, o cookie expirará automaticamente
        //Adiciona  
        ((HttpServletResponse) context.getExternalContext().getResponse()).addCookie(ck);
    }
}

Código que busca o cookie:

public static String getCookieHelper(String nameCookie) {
    //Obter cookie    
    FacesContext ctx = FacesContext.getCurrentInstance();
    if (ctx != null) {
        Map<String, Object> cookies = ctx.getExternalContext().getRequestCookieMap();
        Cookie cookie = (Cookie) cookies.get(nameCookie);
        if (cookie != null) {
            return cookie.getValue();
        }
    }
    return null;
}

Inserindo o cookie:

HelpersSystem.createCookieHelper(Constantes.COOKIEEMAILUSUARIO, this.email, -1);
            HelpersSystem.createCookieHelper(Constantes.COOKIESENHAEMAILUSUARIO, password, -1);
            HelpersSystem.createCookieHelper(Constantes.COOKIEMANTERCONECTADO, "True", -1);

Quando eu listo, somente consigo resgatar o cookie: JSESSIONID

Adicionando essa configuração no web.xml funciona o cookie, mas não funciona mais o uso dos dados de sessão http:

<cookie-config>
        <path>/</path>
        <http-only>true</http-only>
        <secure>true</secure>
    </cookie-config>

Se alguém puder ajudar, obrigado

RESPOSTA

Removi a configuração do web.xml e adicionei a opção setPath("/"); na parte de criar o cookie.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags jsf glassfish java ou faça a sua própria pergunta.