ユーザーがすでにログインしている場合に、ユーザーをホームページにリダイレクトする方法。ログインページに Filter クラスを使用していますが、正しく動作しません。私のコードは次のとおりです。
@WebFilter(filterName = "loginFilter",
urlPatterns ={"/login.xhtml"})
public class LoginFilter implements Filter{
private FilterConfig filterconfig;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.filterconfig = filterconfig;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httprequest =(HttpServletRequest) request;
HttpServletResponse httpresponse =(HttpServletResponse) response;
try{
if(httprequest.getUserPrincipal() != null){
System.out.printf("User authenticated with " + httprequest.getRemoteUser() + " username conected.");
httprequest.getRequestDispatcher("/home.xhtml").forward(request, response);
} else{
chain.doFilter(request, response);
}
}catch(Exception){
//do something
}
}
@Override
public void destroy() {
System.out.print("Existing from loginFilter");
}
}
ここに私の問題があります:ユーザーがWebにログインし、ナビゲーションなどを行い、ログアウトせずにブラウザーの戻るボタンを使用してログインページに戻り、ユーザー名パスワードを再度入力してからログインボタンを押します。次に、例外 IndexOutofBoundsException をスローします。ユーザーがリンクまたはブラウザーの戻るボタンを使用してログインページに移動し、ホームページにリダイレクトするタイミングを確認するだけです。なにか提案を?