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