Spring Boot延續了Spring MVC提供的AOP風格攔截器,擁有精細的攔截處理能力,在Spring Boot中攔截器的使用更加方便。這里只是用登錄的例子來展現攔截器的基本使用。攔截器用途很廣,例如可以對URL路徑進行攔截,也可以用於權限驗證、解決亂碼、操作日志記錄、性能監控、異常處理等。
在項目中創建interceptor包,並創建一個LoginInterceptor攔截器實現HandlerInterceptor接口。
一般用戶登錄功能我們可以這樣實現:要么往session中寫一個user,要么針對每一個user生成一個token。第二種方式更好,針對第二種方式,如果用戶登錄成功了,則每次請求的時候都會帶上該用戶的token;如果未登錄成功,則沒有該token,服務端可以通過檢測這個token參數的有無來判斷用戶有沒有登錄成功,從而實現攔截功能。代碼如下:

每一個攔截器都需要實現HandlerInterceptor接口,實現這個接口有3種方法,每種方法會在請求調用的不同時期完成,因為我們需要在接口調用之前攔截請求並判斷是否登錄成功,所以這里需要使用preHandle方法,在里面寫驗證邏輯,最后返回true或者false,確定請求是否合法。
(1)通過配置類注冊攔截器。
創建一個配置類InterceptorConfig,並實現WebMvcConfigurer接口,覆蓋接口中的addInterceptors方法,並為該配置類添加@Configuration注解,標注此類為一個配置類,讓Spring Boot掃描得到,代碼如下

