不拦截指定路径_控制层访问拦截
在控制層進行訪問攔截也是我們在項目中常會遇到的需求,例如:項目中要求系統登錄操作有時間限制--12306購票時間的限制等.
對于這類需求我們一般有幾種選擇:
本文我們主要說一下SpringMVC攔截器的實現
原理
Spring MVC的攔截器是基于回調機制,可以在目標方法執行之前/之后,做一些處理.
如下圖所示:
客戶端的請求通過前端控制器會被HandleInterceptor攔截器攔截,會根據攔截器的方法(preHandle/postHandle),分別在Controller層的目標方法之前或之后只寫一些業務.
實現
我們要實現的是登錄前的攔截,然后進行時間判定--所以我們需要用preHandle方法,可以在目標方法執行之前,先進行業務檢測,滿足條件則放行,不滿足條件則進行攔截
具體實現分為兩步:
我們自己創建一個類并且實現HandlerInterceptor攔截器接口,然后根據你的業務需求實現方法,我們這里實現的是preHandle方法用于在controller執行之前執行,通過JDK8的新特性--LocalDateTime.now()來獲取當前時間,可以再通過now.getHoure()等方法來獲取具體的小時/分鐘/秒等.在判斷是否在我們禁止登陸的時間范圍內,如果是則拋出異常(這里ServiceException是我們自己定義的異常類),拋出異常==return false,返回值return true表示放行,false表示攔截結束.
創建一個SpringWebConfig類并且實現WebMvcConfigurer接口,類由@Configuration注解描述,表示是一個配置類,重寫實現類中的addInterceptors方法,參數InterceptorRegistry registry攔截器集合,調用addInterceptor(new TimeAccessInterceptor())向其中添加我們定義的攔截器類,在調用addPathPatterns("/user/doLogin"),添加要攔截的路徑,()內就是我們登陸的路徑.
總結
以上是生活随笔為你收集整理的不拦截指定路径_控制层访问拦截的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实例24:python
- 下一篇: 易用性测试(二)