分享知識-快樂自己:SpringBoot結合使用攔截器(判斷是否用戶是否已登陸)


所有的開發之中攔截器一定是一個必須要使用的功能,利用攔截器可以更加有效的實現數據的驗證處理,而且最為幸運的是在SpringBoot之中所使用的攔截器與Spring中的攔截器完全一樣。

基礎攔截器操作:

攔截器是一種AOP操作實現,那么在AOP之中用戶一定不需要去關注攔截器的存在,用戶只需要按照自己已經習慣的處理方式進行代碼的編寫即可。

首先我們先創建一個自定義的攔截器:

public class SysInterceptor extends HandlerInterceptorAdapter { /** * 進入攔截器后首先進入的方法 * 返回false則不再繼續執行 * 返回true則繼續執行 */
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception { System.out.println("我是攔截器:我證明我進來了"); HttpSession session=request.getSession(); User userInfo = (User)session.getAttribute("userInfo"); if(userInfo==null) { System.out.println("我證明用戶沒有登錄"); response.sendRedirect(request.getContextPath()+"/login.html"); return false; } System.out.println("我證明用戶已經登錄"); return  true; } /** * 生成視圖時執行,可以用來處理異常,並記錄在日志中 */
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception exception){ //-----------------//  } /** - * 生成視圖之前執行,可以修改ModelAndView */
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object arg2, ModelAndView arg3) throws Exception{ //----------------------------//  } }

 接下來我們需要將 SysInterceptor 攔截器添加到SpringBoot的配置中,讓SpringBoot項目有這么一個攔截器存在,我們新創建一個SessionConfiguration,將攔截器的配置以及攔截路徑配置好,如下圖所示:

 

下面我們來說明一下: "/fileter/**" 的意思:就是說我要攔截所有以 /fileter 開頭的訪問路徑,因為我Controller層 是這樣編寫的(可根據自己需求更改)

1):這是小編訪問登陸頁面的路徑:沒有以 /fileter開頭

2):這是小編訪問主頁面的路徑:以 /fileter 開頭

 

並且將查到的用戶信息 存儲到了 Session中。

到這里就已經結束。編寫以上的內容,就可以時間基礎的 攔截器。

(加載時機:當我們直接訪問 /fileter/logins 的時候,會先走我們自定義的攔截器。此時從Session中獲取用戶對象信息。若是有信息則是已經登陸了,直接返回 true 通過。否則就 重新跳轉到登陸頁面,返回 False)

 

若有不足之處:請多多指教...

如要轉載:請注明小編本站地址:(https://www.cnblogs.com/mlq2017/)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM