2010-06-06 2 views
0

Как я могу различать несколько файлов cookie, установленных на моем сайте? Я устанавливаю два вида файлов cookie, чтобы увидеть, посетил ли пользователь сайт или нет, а другой - для проверки подлинности. Как я могу различать эти два? Я получаю их оба, когда кто-то обращается к странице после аутентификации. Добавляю ли я дополнительную информацию в значение Cookie или есть ли другой способ? Я понимаю, что функция setName() изменит имя (из jsessionid) для каждого cookie с этого момента. Я прав?Вопросы cookie в Java

  • Pav
+2

есть (15 символов). Разве вы не попробовали? – Bozho

+0

Я предполагаю, что вы говорите о setName(). Я не мог попробовать, так как моя среда IDE каким-то образом ее не видит. Я импортирую java.lang.String в соответствии с этим http://java.sun.com/javaee/6/docs/api/javax/servlet/SessionCookieConfig.html#setName%28java.lang.String%29, но не видит его и поэтому я думал, что что-то не так с тем, что я пытаюсь сделать. – user220201

+0

Ничего. Я забыл, что имя входит в конструктор класса. – user220201

ответ

0

Неправильный вопрос. Имя файла cookie устанавливается при создании объекта cookie.

1

Независимо от того, чтобы аутентифицировать пользователя, я бы предпочел вместо этого использовать HttpSession. При регистрации введите объект User в качестве атрибута сеанса, чтобы вы могли просто проверить наличие объекта User в сеансе. Сам HttpSession поддерживается файлом JSESSIONID, с той лишь разницей, что servletcontainer будет управлять этим все для вас прозрачно.

+0

JSESSIONID недостаточно, не так ли? Мне нужно различать различные файлы cookie, и единственный способ сделать это - указать имя файла cookie для каждой функциональности. – user220201

+0

Вы не должны прикасаться к файлу cookie JSESSIONID. Он используется для поддержки серверной части «HttpSession». Для «посещенного» куки-файла просто создайте свой собственный файл cookie, как вы уже делали. Чтобы дифференцировать его по каждому запросу, просто пройдите через 'request.getCookies()' и проверьте его имя. – BalusC

+0

Да. Это верно. Я понял, что основная проблема с моим кодом, когда я отлаживаю его сейчас, заключается в том, что cookie, который я устанавливаю с помощью addCookie, не доходит до браузера. Я неправильно понял это и думал, что имя не устанавливается, когда на самом деле cookie сам не доходит до браузера. Единственными полями, которые я установил в файле cookie, являются имя, домен и значение. Я не вижу его в браузере как-то.Какие-нибудь догадки о том, почему это может произойти? – user220201

0

Посмотрите на этом сайте для печенья учебник http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-Cookies.html

Вы должны быть в состоянии сделать GetName и проверить имя куки. Вот пример

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); 
    } 

Вы Шоуда создать печенье с чем-то вроде этого ...

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

Спасибо. Я видел это и добираюсь туда. – user220201

+0

Ребята .. response.addCookie() не устанавливает файл cookie в браузере. Любые указания на то, почему это может быть? Единственными полями, которые я установил в файле cookie, являются имя, домен и значение. Я не вижу его в браузере как-то. – user220201

+0

@ user220201 Отключены ли файлы cookie? –