сессия недействительна в JSF2.0 - PullRequest
0 голосов
/ 02 октября 2011

Я использую JSF2.0 с jsp . Я пытаюсь включить недействительность сессии в мой проект. Я пытался использовать следующий код.

<h:commandButton value="Logout" action="#{bean.logout}" </h:commandButton>

и мой класс bean содержит следующий метод

   public class Bean{
    public String logout(){
      FacesContext context = FacesContext.getCurrentInstance();
      HttpSession session = (HttpSession)context.getExternalContext().getSession(false);
      session.invalidate();
      return "login";
    }
   }

где строка login перенаправляет на страницу входа.

В моем проекте есть несколько страниц с заголовочной страницей ... когда я попробовал описанный выше способ ... все работало нормально, когда я нажимал на выход с самой первой страницы ... Если я попробую то же самое после переходя на другие страницы, это не выход из системы . Может ли кто-нибудь помочь мне в этом ... это то, как мы лишаем законной силы сеанс здесь ???

UPDATE

Я также пытался использовать «*» в правиле навигации, чтобы каждую страницу можно было перенаправить на страницу входа в систему ... но проблема все та же

Ответы [ 3 ]

2 голосов
/ 02 октября 2011

Попробуйте

return "login?faces-redirect=true"

в качестве результата, чтобы браузер не использовал тот же запрос для страницы входа, на которой сеанс все еще активен.

0 голосов
/ 15 февраля 2012

Используйте тег remoteCommand и при выходе из системы вызовите этот remoteCommand, используя JavaScript, и предоставьте реализацию в managedBean для выхода из системы, и вы можете выполнить вставку, просто нужно enter code here, чтобы перенаправить на страницу входа, или Вы можете снова использовать JavaScript для перенаправления на страницу входа.

<h:commandButton value="Logout" onclick="closeSession();" </h:commandButton>

<p:remoteCommand name="closeSession"
action="#{jobController.logout}">

public class Bean{
    public String logout(){
          FacesContext context = FacesContext.getCurrentInstance();
          HttpSession session = (HttpSession)context.getExternalContext().getSession(false);
          session.invalidate();
          return "login?faces-redirect=true";
   }
}
0 голосов
/ 02 октября 2011

Вы пробовали это -

return "/login?faces-redirect=true";

Если логин представления находится в корневом каталоге.

В противном случае, если он находится в какой-либо другой папке, выполните следующие действия -

//if it's in the folder - folder1
return "/folder1/login?faces-redirect=true"

Уведомление / в начале результата.

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