實現思路很簡單,通常都用它來作登陸判斷,好比登陸的時候檢查該用戶是否還在有效期範圍內,若是不在開始時間與結束時間以內,那麼就代表該用戶已通過期;前端
這樣的話,首先就能夠想起三個參數,第一個須要獲取當前系統時間,由於咱們登陸的時候須要根據當前時間來判斷,該用戶是否還在有效期以內,而後再用數據庫中獲取該用戶的開始時間與結束時間,這兩個字段須要在數據庫中存在;數據庫
1.首先,我須要須要編寫一個uti類,建立一個函數方法:函數
/** * 時間格式化轉換 * @param time * @return */ public static long dateToTimestamp(String time) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { Date date = simpleDateFormat.parse(time); long ts = date.getTime()/1000; return ts; } catch (ParseException e) { return 0; } } /** * 傳入參數返回布爾類型,在此方法進行邏輯判斷,若是當前時間(currenttime)在開始時間(startTime)與結束時間(endTime)以內就 * 就返回true,不然就返回false * @param currenttime * @param startTime * @param endTime * @return */ public static boolean isUserChick(String currenttime,String startTime,String endTime){ long c= DateUtil.dateToTimestamp(currenttime); long s=dateToTimestamp(startTime); long e= DateUtil.dateToTimestamp(endTime); if (s<c&&c<e){ return true; }else { return false; } }
2.在登陸的攔截器中調用DateUtil中的isUserChick方法便可,須要傳入三個參數,當前系統時間、開始時間、結束時間spa
/** *判斷用戶是否帳號正常 *登陸判斷當前時間是否在開始時間和結束時間範圍內,若是不在提示帳號過時 */ //獲取當前系統時間 Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");//能夠方便地修改日期格式 String currenttime = dateFormat.format(date); //獲取用戶開始時間 String startTime = user.getStartTime(); //獲取用戶結束時間 String endTime = user.getEndTime(); //判斷帳號是否過時 boolean flag=DateUtil.isUserChick(currenttime,startTime,endTime); if (flag==false){ throw new ExpiredCredentialsException(); }
由於咱們登錄採用的是Shiro攔截器,因此,若是發現該用戶再也不範圍以內,直接拋出異常給前端便可;code
該模塊還須要一點就是,若是傳過來的開始時間與結束時間爲空,那麼就證實該用戶是永久,再也不進入時間戳判斷:orm
if (StringUtil.isNotEmpty(user.getStartTime())&&StringUtil.isNotEmpty(user.getEndTime())){}