2013-11-12 3 views
4

Сегодня я пробовал это kind of code ... после входа в систему Я удалил все файлы cookie с помощью своего браузера FF, затем обновил веб-страницу, и у меня появился NPE: P Итак, я думал существует простой способ для «восстановить» или любой другой сеанс, если файлы cookie были удалены вручную на клиенте или наиболее оптимальный способ в этой ситуации, особенно если некоторые данные (связанные с атрибутом сеанса) все еще находятся в области контекста сервлета ?запрос после куки были удалены вручную с помощью браузера

Например, если у меня есть некоторый идентификатор в качестве сессии

session.setAttribute("id","hello world"); 

... и у меня есть код, как

String userID=null; 
       Cookie []cookies=req.getCookies(); 

        for(Cookie cookie:cookies) 
        { 
         if(cookie.getName().equals("id")){userID=cookie.getValue();} 
        } 


String id=session.getAttribute("id"); 
User user=((MyUsers)context.getAttribute("Users")).getUser(id); 

, как я могу удалить пользователя (чтобы избежать дубликатов), если

  • A) Существует без печенья потому что они были удалены вручную
  • B) и session.getAttribute("id"); Броски NPE?

Благодаря

ответ

0

сервлетов среда использует URL переписывания или Cookies для отслеживания сеансов пользователей (это HTTP вещь). Если вы удалите файлы cookie в своем браузере, вы (вероятно,) потеряете все соединение между браузером пользователя и вашим веб-приложением.

Если вы хотите запомнить пользователя, вам нужны куки. NPE, который вы получаете, - это просто отражение отсутствия файла cookie (и недостающих бит в вашей программе).

Итак, вы должны проверить, существуют ли файлы cookie и/или сеанс (проверяют NPE), если вы не можете найти их, тогда вы не сможете отслеживать пользователя (и должны перенаправить его на ваш страница входа - если это применимо).

+0

AFAIK нет способа отслеживать. Помните, что это происходит в браузере пользователя, полностью отключен от вашего сервера. Вы можете реализовать что-то вроде предложенного на http://www.nakov.com/inetjava/lectures/part-3-webapps/InetJava-3.4-Servlet-lyfecycle-Sessions-Cookies.html item 3. Но в конце все как вы решили реализовать его ... – megathor

+0

А как насчет какого-то «стандартного архитектурного решения» для такого рода ситуаций? Или дублировать пользователей в порядке? Или как обойти проблему «дублированных пользователей»? – user592704

Смежные вопросы