public class LoginedCheckInterceptor extends AbstractInterceptor {
/**
*
*/
private static final long serialVersionUID = 1L;
/** 拦截请求并进行登录有效性验证 */
public String intercept(ActionInvocation arg) throws Exception {
//取得请求的URL
String url = ServletActionContext.getRequest().getRequestURL().toString();
HttpServletResponse response=ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
// response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setDateHeader("Expires",0);
LoginUser loginUser = null;
//对登录与注销请求直接放行,不予拦截
if (url.indexOf("login.action")!=-1 || url.indexOf("exitSave.action")!=-1){
return arg.invoke();
}
else{
//验证Session是否过期
if(!ServletActionContext.getRequest().isRequestedSessionIdValid()){
//session过期,转向session过期提示页,最终跳转至登录页面
return "tologin";
}
else{
loginUser = (LoginUser)ServletActionContext.getRequest().getSession().getAttribute("user");
//验证是否已经登录
if (loginUser==null){
//尚未登录,跳转至登录页面
return "tologin";
}else{
return arg.invoke();
}
}
}
}
}