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)
便是添加拦截器继承