Перенаправление на страницу индекса после истечения времени ожидания сеанса в .war - PullRequest
1 голос
/ 13 апреля 2011

Мы используем Struts2 & GWT-EXT.

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

Вот метод LoginInterceptor

public String intercept(ActionInvocation arg0) throws Exception {

        try
        {
            System.err.println("inside the login interceptor");
            Map session = arg0.getInvocationContext().getSession();
            User loggedInUser = (User)session.get("loggedInUser");

            if(loggedInUser != null)
            {

                return arg0.invoke();
            }else {

                throw new AuthorizationException("unAuthorized");               
            }

        }catch (Exception e) {          
            throw e;
        }       
    }

После тайм-аута сессии. Если пользователь нажимает на любую кнопку. Перед продолжением вызова LoginInterceptor и проверяет, вошел ли пользователь в систему или нет.

В коде

У нас есть метод public void onFailure(Throwable caught) {

где я проверяю это

if (caught instanceof InvocationException) {
        if (caught instanceof StatusCodeException
                && caught.getMessage().contains(
                    "<title>Error 500 unAuthorized</title>")) {
            MessageBox.alert("Session Expired", "Session has been expired. Press Ok to redirect to Login page.", new AlertCallback(){ 
                    public void execute(){ 
                        History.newItem(HistoryToken.INDEX_PAGE.toString());
                    } 
                }); 

        } else if (caught.getMessage().contains("LoginInterceptor")) {
            History.newItem(HistoryToken.INDEX_PAGE.toString(), true);
        }

Затем я перенаправляю его на страницу индекса.

Это хорошо работает в Eclipse в Hosted Mode, но когда я создаю .war и запускаю его в JBoss. Он не входит в метод onFailure и перенаправляется непосредственно на страницу индекса.

1 Ответ

1 голос
/ 21 апреля 2011

Hiii ...

попробуйте этот код непосредственно перед кодом исключения вызова.до if (caught instanceof InvocationException) { состояния ....

if(caught.getMessage().contains("unAuthorized") )
    {
        MessageBox.alert("Session Expired", "Session has been expired. Press Ok to redirect to Login page.", new AlertCallback(){ 
            public void execute(){ 
                History.newItem(HistoryToken.INDEX_PAGE.toString());
            } 
        }); 

    }
...