package com.huiminSys.web;
import java.util.Date;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.huiminSys.dao.LoginDao;import com.huiminSys.entity.Login;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class VerifyLoginInterceptor extends AbstractInterceptor { LoginDao loginDao=null; Login login=new Login(); @Override public String intercept(ActionInvocation ai) throws Exception { // 获取当前正在运行的action的名字 String strActionName = ai.getInvocationContext().getName(); System.out.println(strActionName+"拦截器的动作------"+"开始执行登录Action的时间为:"+new Date()); if (strActionName.equals("Login_getOneLogin") || strActionName.equals("Log_doFilter")) { // 放行 return ai.invoke(); } // request对象 HttpServletRequest request = ServletActionContext.getRequest(); // session对象 HttpSession session = request.getSession(); // 验证结果 boolean verifyResult = true; // 消息 String message = null; // 验证登录标示 Integer userId = null; if (verifyResult) { userId = (Integer) session.getAttribute("cunid"); if (userId == null) { verifyResult = false; message = "请先登录。"; } } // 验证帐号有效性 if (verifyResult) { login=loginDao.getOneLogin(userId); if (login == null) { verifyResult = false; message = "无效帐号。"; } } // 验证不通过 if (!verifyResult) { // 保存消息 request.setAttribute("message", message); // 判断请求类型 String requestType = request.getHeader("X-Requested-With"); if ("XMLHttpRequest".equalsIgnoreCase(requestType)) { // Ajax请求 // 到登录页面 System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); return "dlym"; } else { // 普通请求 // 到登录页面 System.out.println("cccccccccccccccccccccccccccccccccccc"); return "dlym"; } } // 保存当前登录用户对象 request.setAttribute("currentUser", login); // 放行 System.out.println("bbbbbbbbbbbbbbbbbbbbbbbbb"); return ai.invoke(); } public LoginDao getLoginDao() { return loginDao; } public void setLoginDao(LoginDao loginDao) { this.loginDao = loginDao; } public Login getLogin() { return login; } public void setLogin(Login login) { this.login = login; } }//配置文件其他做安全验证的列表都继承这个配置文件的包名
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><package name="all" extends="struts-default"> <interceptors> <!-- 定义权限控制拦截器 --> <interceptor name="authority" class="com.huiminSys.web.VerifyLoginInterceptor" /> <!-- 定义一个包含权限控制的拦截器栈 --> <interceptor-stack name="mydefault"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="authority" /> </interceptor-stack> </interceptors> <!-- 定义默认拦截器 --> <default-interceptor-ref name="mydefault" /> <!-- 定义全局处理结果 --> <global-results> <!-- 逻辑名为login的结果,映射到/login.jsp页面 --> <result name="dlym">/login.jsp</result> </global-results> </package></struts>