jFinal 攔截器 interceptor

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)

便是添加攔截器繼承

相關文章
相關標籤/搜索