public class UserInterceptor implements Interceptor { @Override public void intercept(Invocation inv) { Controller controller = inv.getController(); String loginId = controller.getCookie(CommonConstant.ADMIN_LOGIN_ID_COOKIE); String orgId = controller.getCookie(CommonConstant.ADMIN_ORG_ID_COOKIE); String pwd = controller.getCookie(CommonConstant.ADMIN_LOGIN_PWD_COOKIE); if (StringUtils.isNotEmpty(orgId)) { MemberInfo m = MemberInfo.dao.findById(Long.parseLong(loginId)); if (m != null && m.getStr("password").equals(pwd)) { controller.setAttr("loginMember", m); inv.invoke(); } else { controller.removeCookie(CommonConstant.ADMIN_LOGIN_ID_COOKIE); controller.removeCookie(CommonConstant.ADMIN_LOGIN_PWD_COOKIE); controller.redirect("/adminLogin/adminLogin"); return; } } else { controller.removeCookie(CommonConstant.ADMIN_LOGIN_ID_COOKIE); controller.removeCookie(CommonConstant.ADMIN_LOGIN_PWD_COOKIE); controller.redirect("/adminLogin/adminLogin"); return; } } }
攔截器做用:防止用戶不登陸直接訪問項目路徑,加上攔截器,在登陸後將用戶關鍵信息存在cookie,下一次進的時候判斷cookie的值,而後經過攔截器直接訪問項目。在這裏UserInterceptor類須要繼承Interceptor,實現一個interceptor方法,inv來控制是否經過攔截器,若經過就繼續走相應的controller裏面的方法,不經過即根據攔截器方法裏面的業務返回到登陸頁面。cookie
在控制器前添加ide
@Before(UserInterceptor.class)
便是添加攔截器繼承