создать новый сеанс каждый раз, когда вход в систему не работает должным образом в сервлете Java - PullRequest
0 голосов
/ 30 августа 2018

У меня есть страница индекса jsp, которая содержит 3 кнопки (войдите как пользователь, зарегистрируйтесь, войдите как менеджер). Всякий раз, когда пользователь выбрал один из этих вариантов. он будет перенаправлен в loginservlet (через http FORM) и из loginServlet я могу проверить данные для входа и начать новый сеанс, если данные действительны. Однако, когда я использую SessionListener, чтобы проверить, создан ли новый сеанс, когда новый пользователь зарегистрирован или вошел в систему, я всегда получаю один и тот же идентификатор сеанса.

вот функция в loginServlet

    private void initSession(HttpServletRequest request, HttpServletResponse response, String sessionsTyp) {
    // https://www.studytonight.com/servlet/httpsession.php
    // Create Session if user-login or manager-login success
    HttpSession session = request.getSession();
    if (sessionsTyp.equals("userLogin") || sessionsTyp.equals("managerLogin")) {
        if (sessionsTyp.equals("managerLogin")) {
            session.setMaxInactiveInterval(10);
        }
    } else {   // Create Session if registry success
        session = request.getSession(true);
    }
    // Storing user information in an attribute of Session. Username is unique therefore use username as sessionid
    if (this.username != null) {
        session.setAttribute(Constants.SESSION_USER_KEY, username);
    } else {
        session.setAttribute(Constants.SESSION_MANAGER_KEY, session.getId());
    }
}

когда я открываю новую страницу index.jsp для входа или регистрации, я не получаю новый сеанс (я вижу его в журнале). И я не могу понять одну вещь: когда я запускаю сервер, я сразу же получаю новый идентификатор сессии. Я новичок в сервлете. пожалуйста, помогите мне.

Спасибо

1 Ответ

0 голосов
/ 30 августа 2018

Вы должны вызвать session.invalidate(), который в основном отбрасывает текущий сеанс и отменяет привязку любого объекта, связанного с ним.

https://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpSession.html#invalidate()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...