Фильтр аутентификации, предотвращающий переход пользователя на страницу входа, если он уже вошел в систему - PullRequest
0 голосов
/ 19 августа 2011

Я хочу запретить пользователю возвращаться на страницу входа, если он уже вошел в систему

 if (req.getRequestURI().indexOf("Login.jsp") != -1 || req.getRequestURI().indexOf("LoginE.jsp") != -1) {

                   System.out.println("trtying to go to login");

                 //what should I write here to redirect the user to the page he was already in ??
             }

Ответы [ 2 ]

1 голос
/ 19 августа 2011

Просто убедитесь, что пользователь уже вошел в систему, а затем перенаправьте на нужную целевую страницу. Предполагая, что user представляет вошедшего в систему пользователя, которого вы взяли из сеанса, вот пример:

if (req.getRequestURI().indexOf("Login.jsp") != -1 || req.getRequestURI().indexOf("LoginE.jsp") != -1) {
    if (user != null) {
        response.sendRedirect("already-logged-in.jsp");
        return;
    }
}

где эта страница выглядит как

<p>You appears to be already logged in. If you want to login as someone else, 
   please use the <a href="logout">logout</a> link to logout, or navigate to a
   different page by menu on the left hand side.</p>

Я бы вообще скрывал ссылку на страницу входа, когда пользователь уже вошел в систему, просто чтобы пользователь случайно не щелкнул это или что-то еще.

<c:if test="${empty user}">
    <a href="Login.jsp">Login</a>
</c:if>

Не имеет отношения к конкретной проблеме, что это за Login.jsp и LoginE.jsp? Один на родном языке, а другой на английском? Вы можете потратить некоторое время на локализацию JSTL. Как интернационализировать веб-приложение на Java?

0 голосов
/ 19 августа 2011

В зависимости от того, как ваш пользователь получил запрос Login.jsp, вы можете потерять информацию о предыдущем запросе.Вы пытались заглянуть в заголовок "Referer", чтобы увидеть, есть ли там предыдущая страница?Вы можете использовать req.getHeaders("Referer");

Если информация о реферере отсутствует, вам придется управлять атрибутом Session для пользователя, который называется что-то вроде «lastRequestURL».Таким образом, вы можете получить его в приведенном выше коде, используя: req.getSession().getAttribute("lastRequestURL") и перенаправить пользователя к этому значению.

...