JSESSIONID не распознается после повторного открытия браузера - PullRequest
0 голосов
/ 02 ноября 2018

Предположим, у вас есть два сервлета:

login.java (создает новый сеанс и печатает JSESSIONID)

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

    try{
        HttpSession s = request.getSession();
        out.print(s.getId());
    }
    finally{
        out.close();
    }
}

session.java (печатает материал, только если пользователь аутентифицирован)

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    HttpSession s = request.getSession(false);
    if(s == null){
        response.sendError(401);
    }else{
       try{
           out.print("Welcome back, ID" + s.getId());
       }
       finally{
           out.close();
       }
    }
}

Если я сначала запускаю логин, а затем сессию (но я не закрываю браузер), все в порядке. Если я сначала запускаю логин, то я закрываю браузер, снова открываю его и набираю: HTTP: \ локальный: 8080 \ ApplicationName \ сессии; JSESSIONID = theidprintedbylogin Я получаю сообщение об ошибке 401. (Я провел эти тесты с отключенными файлами cookie!). Срок действия httpsession уже истек, хотя срок его действия составляет 30 минут?

...