簡單使用攔截器實現登入+攔截器
阿新 • • 發佈:2020-08-11
攔截器
參考b站狂神視訊
Spring MVC中的攔截器(Interceptor)類似於Servlet中的過濾器(Filter),它主要用於攔截使用者請求並作相應的處理。例如通過攔截器可以進行許可權驗證、記錄請求資訊的日誌、判斷使用者是否登入等。
攔截器重寫三個方法,詳見參考,其與過濾器的區別參考 https://blog.csdn.net/zxd1435513775/article/details/80556034
為了解決 使用者可以不登陸便可進入主頁,這是不安全的,為了解決這個問題,便可使用攔截器。
一、新建登入攔截器
LoginHandlerIntercepter.java
package com.example.employee_management.config;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @className: LoginHandlerIntercepter
* @description: 登入攔截器
*/
public class LoginHandlerIntercepter implements HandlerInterceptor {
二、在MVC配置類中新增登入攔截器
MyMvcConfig.java
package com.example.employee_management.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @className: MyMvcConfig
* @description: MVC 控制器 藉助註解完成控制器而不用手動編寫
*/
三、修改登入控制器:新增session來保證攔截器正常執行
LoginController.java
package com.example.employee_management.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpSession;
啟動專案後,在瀏覽器中輸入
localhost:8080/main.html
便會轉入到首頁(index.html),並且提示使用者尚未登入。 登入攔截器的功能便已完成。