package login;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class LoginInterceptor extends AbstractInterceptor {
    private static final long serialVersionUID = 1L;
    @Override
    public String intercept(ActionInvocation ai) throws Exception {
        //取得请求的URL  
        String url = ServletActionContext.getRequest().getRequestURL().toString();  
        HttpServletResponse response=ServletActionContext.getResponse();  
        response.setHeader("Pragma","No-cache");            
        response.setHeader("Cache-Control","no-cache");     
        response.setHeader("Cache-Control", "no-store");     
        response.setDateHeader("Expires",0);  
        System.out.println("execute LoginInterceptor");
        //对登录与注销请求直接放行,不予拦截  
        if (url.indexOf("login.action")!=-1 || url.indexOf("logout.action")!=-1)
            {  
                return ai.invoke();  
            }  
        else
        {  
            //验证Session是否过期  
            if(!ServletActionContext.getRequest().isRequestedSessionIdValid())
                {  
                    //session过期,转向session过期提示页,最终跳转至登录页面  
                    return "tologin";  
                }  
            else
                {  
                    String systemUser =(String) ServletActionContext.getRequest().getSession().getAttribute("user");  
                    //验证是否已经登录  
                    if (systemUser==null)
                        {  
                            //尚未登录,跳转至登录页面  
                            return "tologin";  
                        }
                    else
                        {                      
                            return ai.invoke();                   
                        }                  
                }              
        }  
        
    }

}
LoginInterceptor

相关文章: