会话超时后,重定向到索引页面在.war中不起作用

时间:2011-04-13 13:46:30

标签: gwt gwt-ext

我们正在使用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);
        }

然后,我将其重定向到Index Page。

这在Eclipse中可以在托管模式下运行,但是当我创建.war并在JBoss中运行它时。它不会进入onFailure方法并直接重定向到Index Page。

1 个答案:

答案 0 :(得分:1)

... 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());
            } 
        }); 

    }