2010-06-06 9 views
0

내 사이트를 통해 설정된 여러 쿠키를 어떻게 구별합니까? 사용자가 사이트를 방문했는지 여부를 확인하기 위해 두 종류의 쿠키를 설정하고 인증을 위해 다른 쿠키를 설정합니다. 이 둘을 어떻게 구별합니까? 다른 사람이 인증 후 페이지에 액세스 할 때 나는 그 둘을 얻습니다. 쿠키 값에 추가 정보를 추가합니까? 아니면 다른 방법이 있습니까? 그때부터 모든 쿠키에 대해 setName() 함수가 (jsessionid에서) 이름을 변경한다는 것을 이해합니다. 나 맞아?Java의 쿠키 관련 질문

  • 파브
+2

예 (15 자) 너 시도하지 않았 니? – Bozho

+0

당신이 setName()에 대해 이야기하고 있다고 가정합니다. 내 IDE env 어떻게 든 그것을 볼 수 없기 때문에 나는 그것을 시도 할 수 없었다. 이 http://java.sun.com/javaee/6/docs/api/javax/servlet/SessionCookieConfig.html#setName%28java.lang.String%29에 따라 java.lang.String을 가져 오지만 표시되지 않습니다. 그래서 내가하려고하는 것에 뭔가 잘못된 것이 있다고 생각했습니다. – user220201

+0

신경 쓰지 마세요. 나는 그 이름이 그 클래스의 생성자에 들어가는 것을 잊었다. – user220201

답변

0

잘못된 질문입니다. 쿠키 이름은 쿠키 객체가 생성 될 때 설정됩니다.

1

사용자 인증에 관계없이 대신 HttpSession을 사용하고 싶습니다. 로그인시 User 개체를 세션 속성으로 두어 세션에서 User 개체의 존재 여부 만 확인할 수 있습니다. HttpSession 자체는 JSESSIONID 쿠키에 의해 뒷받침됩니다. 유일한 차이점은 servletcontainer가이 모든 것을 투명하게 관리한다는 것입니다. 당신은 대한 getName 수행하고 쿠키의 이름을 확인 할 수 있어야 쿠키 튜토리얼 http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-Cookies.html

이 사이트에서

+0

JSESSIONID가 충분하지 않습니까? 나는 다른 쿠키를 구별 할 필요가 있으며이를 수행하는 유일한 방법은 기능마다 쿠키의 이름을 설정하는 것입니다. – user220201

+0

어떤 식 으로든 JSESSIONID 쿠키를 건드리지 않아야합니다. 그것은 서버 쪽'HttpSession'을 유지하는 데 사용됩니다. "방문한"쿠키의 경우 이미 수행 한 것처럼 자신의 쿠키를 만듭니다. 요청마다 차별화하려면'request.getCookies()'를 반복하고 이름을 확인하십시오. – BalusC

+0

예. 맞아요. 나는 그것을 깨달았지만 지금 디버깅 할 때 내 코드의 주요 문제점은 내가 addCookie로 설정 한 쿠키가 브라우저에 도달하지 않는다는 것이다. 쿠키를 오해하고 실제로 쿠키 자체가 브라우저에 도달하지 않을 때 이름이 설정되지 않는다고 생각했습니다. 쿠키에서 설정 한 유일한 필드는 이름, 도메인 및 값입니다. 어떻게 든 브라우저에 표시되지 않습니다.이것이 일어날 수있는 이유에 대한 추측은 무엇입니까? – user220201

0

봐. 여기

Cookie searchStringCookie = 
    new LongLivedCookie("name", value); 
response.addCookie(searchStringCookie); 
+0

감사합니다. 나는 그것을 보았고 거기에 도착했다. – user220201

+0

Guys .. response.addCookie()가 브라우저에서 쿠키를 설정하지 않습니다. 왜 이런 일이 일어날 지에 대한 어떤 조언이 필요한가요? 쿠키에서 설정 한 유일한 필드는 이름, 도메인 및 값입니다. 어떻게 든 브라우저에 표시되지 않습니다. – user220201

+0

@ user220201 쿠키가 해제되어 있습니까? –

0

쿠키는 이름 - 값 쌍으로 constructed입니다 ... 샘플

public static String getCookieValue(Cookie[] cookies, 
             String cookieName, 
             String defaultValue) { 
    for(int i=0; i<cookies.length; i++) { 
     Cookie cookie = cookies[i]; 
     if (cookieName.equals(cookie.getName())) 
     return(cookie.getValue()); 
    } 
    return(defaultValue); 
    } 

당신은 이런 일에 쿠키를 만들 갈까요입니다.

HttpServletRequest 인터페이스의 getCookies() 전화는 요청중인 모든 쿠키를 즉시 반환합니다.

Cookieretrieve it's valuegetName 전화를 사용하여 이름을 확인하여 모든 쿠키를 반복하고 필수 쿠키를 찾을 수 있습니다.