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