... 나는 ...session.invalidate를 사용하는 JSF 로그 아웃이 현재 사용자 이름을 지우지 않습니까? 내 JSF 응용 프로그램에서
public String getLoggedInUsername() {
return FacesContext.getCurrentInstance().getExternalContext().getRemoteUser();
}
를 현재이 같은 로그인 한 사용자의 이름을 얻을 ... 그리고 사용자가 다음과 같이 로그인하면 내가 확인
public boolean isSignedIn() {
return (getLoggedInUsername() != null);
}
... 그리고 사용자가 로그 아웃, 나는 doLogout는()를 getLoggedInUsername()가 여전히 로그인 한 사용자의 이름을 반환 한 후
public String doLogout() {
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpSession httpSession = (HttpSession)facesContext.getExternalContext().getSession(false);
httpSession.invalidate();
return "main";
}
내 문제가 ... 이렇게. 뭐 getRemoteUser()가 로그 아웃 후 null을 반환하는지 확인해야합니까?
대신 사용자 이름을 확인하는 것보다 isSignedIn()을 사용하는 것이 더 좋은 방법일까요?
감사합니다. Rob
관련 메소드 자체를 디버깅 했습니까? 아니면 웹 브라우저 작동 방식에 따라 직접 추측 했습니까? 페이지는 브라우저 캐시에서 요청할 수 있습니다. – BalusC
예, 디버깅했습니다. doLogout() 메소드가 완료되면 getLoggedInUsername()을 실행하고 로그인 한 사람의 사용자 이름을 반환합니다 (심지어 session.invalidate가 실행 된 후에도). 어떤 아이디어? –
리디렉션을 보내고 있는지 알 수 없습니다. :) 기본 동작이 무엇이든간에 doLogOut() 브라우저를 사용하면 브라우저가 어떤 페이지에서든지 나가서 main.jsf 페이지를 볼 수 있습니다.이 페이지는 로그인 할 필요가 없습니다.). 그게 도움이 되니? –