Login 注销主窗口后,弹出窗口链接仍在工作

Login 注销主窗口后,弹出窗口链接仍在工作,login,struts2,logout,interceptor,Login,Struts2,Logout,Interceptor,我使用的是struts 2登录拦截器。代码运行良好。在我的应用程序中使用了许多弹出窗口。当我打开弹出窗口并从主窗口中注销时,弹出窗口显示我编码的登录页面,但仅在这种情况下,我希望它将显示任何消息(会话已过期或你已注销),而不是登录页面 如果需要修改,请查看我的代码 LoginInterceptor.java web.xml 用户注销 您必须显式地编写该逻辑,默认情况下不会这样做 在将用户从会话中删除后的注销操作中,也要使其无效 session.remove("loggedInUser"); s

我使用的是struts 2登录拦截器。代码运行良好。在我的应用程序中使用了许多弹出窗口。当我打开弹出窗口并从主窗口中注销时,弹出窗口显示我编码的登录页面,但仅在这种情况下,我希望它将显示任何消息(会话已过期或你已注销),而不是登录页面

如果需要修改,请查看我的代码

LoginInterceptor.java web.xml 用户注销
您必须显式地编写该逻辑,默认情况下不会这样做

在将用户从会话中删除后的注销操作中,也要使其无效

session.remove("loggedInUser"); 
session.invalidate();
session = null;
然后在拦截器中检查会话是否有效,如果无效,则添加一个属性,说明会话已过期或已注销

因此,您的拦截器代码如下所示:

HttpSession session = request.getSession(true);
if(session == null){
   request.setAttribute("SessionExpired","Your session has expired or you have logged out");
}
Object user = session.getAttribute(USER_HANDLE);
然后,如果您的jsp页面在显示登录屏幕时检查请求是否具有“SessionExpired”属性,如果是,则向用户显示该属性

public class LogOutUserAction extends ActionSupport {

    private static final long serialVersionUID = 1L;

public String execute() throws Exception { 
      System.out.println("inside :: LogOutUserAction------");

      Map session = ActionContext.getContext().getSession();


  session.remove("loggedInUser"); 
  return "logout";
  }
}
<td width="*" align="right" valign="top">                                   
                                    <s:url var="urlLogOut" action="logOutUser.action">                              
                                        <s:param name="loginOut" value="%{'2'}"/>                                       
                                    </s:url>
                                    <sx:a href="%{#urlLogOut}" targets="divAddEditUser">
                                        <font color="white">Log Out</font>
                                    </sx:a>
                                        <!--<a href="logOutUser.action"><font color="white">Log Out</font></a>
                                    --></td>
                                </tr>
 ServletActionContext.getRequest().getSession().setAttribute("loggedInUser", loginId);

    return "selectRole";
session.remove("loggedInUser"); 
session.invalidate();
session = null;
HttpSession session = request.getSession(true);
if(session == null){
   request.setAttribute("SessionExpired","Your session has expired or you have logged out");
}
Object user = session.getAttribute(USER_HANDLE);