2015-02-22 1 views
1

У меня есть страница входа (Index.jsp), здесь пользователь вводит идентификатор пользователя и пароль. on submit LoginAuthentification.java (класс действия), вызываемый и аутентифицирующий пользователя, но в соответствии с результатом в классе действий он возвращает JSP.После выхода из системы возврата/перезагрузки в Struts 2

<action name="login" class="com.struts2.LoginAuthentication" 
    method="execute"> 
    <interceptor-ref name="clear-cache" /> 
    <result name="manager">/ManagerView.jsp</result> 
    <result name="SSE" type="redirectAction"> 
     <param name="actionName">viewPlan</param> 
     <param name="userID">${userID}</param> 
    </result> 
    <result name="input">/Index.jsp</result> 
    <result name="error">/error.jsp</result> 
</action> 

В этом случае возвращается ManagerView.jsp. Теперь в этом JSP я добавил гиперссылку для logout. и это делает ниже

<action name="logout" class="com.struts2.LoginAuthentication" 
    method="logout"> 
    <interceptor-ref name="clear-cache" /> 
    <result name="success">/Index.jsp</result> 
    <result name="error">/error.jsp</result> 
</action> 

кода из класса действий

public String logout() { 
    //if (session instanceof org.apache.struts2.dispatcher.SessionMap) { 
    session.clear(); 
    //session.re 
    System.out.println("test"); 
    session.remove("loggedInUser"); 
    ((org.apache.struts2.dispatcher.SessionMap) session).invalidate(); 

    //} 
    return "success"; 
} 

после выхода из системы он перенаправляется на Index.jsp, теперь я нажал на кнопку назад Это отображение "confirm form resubmission" сообщения в хроме и веб-страница истекла в IE. Но когда я перезагружаю страницу, он автоматически вводит в систему старого пользователя. Я добавил

<%       
    response.setHeader("Cache-control", "no-cache, no-store");   
    response.setHeader("Expires", "0"); 
    response.setHeader("Vary", "*"); 
%> 

в JSP, а также в перехватчика.

Я пытаюсь заблокировать автоматический вход в систему при перезагрузке.

+0

Укажите, какую ошибку вы получаете/какую-то информацию, которая поможет экспертам лучше понять проблему. –

ответ

0

Проблема в том, что после выхода из системы вы фактически не являетесь перенаправлением на новое действие. Причиной такого поведения при нажатии кнопки «Назад» вы получили диалог конфигурации в браузере. Кнопка «Назад» не используется для вызова действия, если только она не вызывается через запуск с помощью Ajax. При выполнении запроса на выход вы должны следовать шаблону post-redirect-get.

<action name="logout" class="com.struts2.LoginAuthentication" method="logout"> 
    <interceptor-ref name="clear-cache" /> 
    <result name="success" type="redirect">/</result> 
    <result name="error">/error.jsp</result> 
</action> 
+0

Спасибо за ваш ответ Роман. Я попробовал код, который вы предоставили, но это не помогло. – SUNNY

0

Я решил проблему, перенаправив ее на другое действие. и написал другой перехватчик, чтобы проверить, имеет ли он идентификатор пользователя в сеансе или нет.

<default-interceptor-ref name="loginStack"></default-interceptor-ref> 
<action name="login" class="com.struts2.LoginAuthentication" 
      method="execute"> 
      <interceptor-ref name="defaultStack"/> 
      <result name="manager" type="redirectAction"> 
      <param name="actionName">home</param> 
      </result> 
</action> 
<action name="home" class="com.struts2.LoginAuthentication" 
      method="home"> 
      <result name="success">/ManagerView.jsp</result> 
      <result name="error">/error.jsp</result> 
     </action> 

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

  • Нет связанных вопросов^_^