日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot拦截器配置拦截登陆

發布時間:2023/12/10 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot拦截器配置拦截登陆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,pom.xml的配置

? ? 這里很簡單,先引入spring-boot-starter-parent,parent 是父模塊,由父模塊統一進行 spring-boot 版本管理,dependencies 中與 spring-boot 啟動綁定的包不需要再指定版本。

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELEASE</version> </parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> </dependencies>

二,新建WebConfigurer

? ? 1,如圖,新建的 config 包,用來裝初始化文件,在配置之下新建 WebConfigurer。

? ? 2,WebConfigurer需要實現 WebMvcConfigurer 這個接口,并實現里面的兩個方法。(在老版本的 spring-boot 中使用的是WebMvcConfigurerAdapter,新版本中已過時!!!還有不能通過繼承 WebMvcConfigurationSupport 這個類來實現,這樣會在某些情況下失效!!!),第二個 addInterceptors 方法用來注冊添加攔截器。

import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration public class WebConfigurer implements WebMvcConfigurer {// 這個方法是用來配置靜態資源的,比如html,js,css,等等@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {}// 這個方法用來注冊攔截器,我們自己寫好的攔截器需要通過這里添加注冊才能生效@Overridepublic void addInterceptors(InterceptorRegistry registry) {} }

?

三,新建登陸攔截器

? ? 如下圖所示,在 config 包下新建一個 intercepors 包,用來裝攔截器。然后在攔截器下新建 LoginInterceptor,用來攔截驗證登陸。

? ? 2,每一個攔截器有需要實現的 HandlerInterceptor 接口,這個接口有三個方法,每個方法會在請求調用的不同時期完成,因為我們需要在接口調用之前攔截請求判斷是否登陸,所以這里需要使用 preHandle 方法,在里面寫驗證邏輯,最后返回 true 或者 false,確定請求是否合法。記住加 @Component 注解,我們需要在上一步的 WebConfigurer 類中注入。用戶是自定義的用戶類,大家可以自己定義,我這里就不貼出來了。

import com.impte.study.domain.po.User; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;@Component public class LoginInterceptor implements HandlerInterceptor {//這個方法是在訪問接口之前執行的,我們只需要在這里寫驗證登陸狀態的業務邏輯,就可以在用戶調用指定接口之前驗證登陸狀態了public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//每一個項目對于登陸的實現邏輯都有所區別,我這里使用最簡單的Session提取User來驗證登陸。HttpSession session = request.getSession();//這里的User是登陸時放入session的User user = (User) session.getAttribute("user");//如果session中沒有user,表示沒登陸if (user == null){//這個方法返回false表示忽略當前請求,如果一個用戶調用了需要登陸才能使用的接口,如果他沒有登陸這里會直接忽略掉//當然你可以利用response給用戶返回一些提示信息,告訴他沒登陸return false;}else {return true; //如果session里有user,表示該用戶已經登陸,放行,用戶即可繼續調用自己需要的接口}}public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {}public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {} }

?

四,在WebConfigurer中添加攔截器

? ? 1,首先將 LoginInterceptor 注入到 WebConfigurer 中。

@Autowiredprivate LoginInterceptor loginInterceptor;

? ? 2,然后在 WebConfigurer 中的 addInterceptors 中添加攔截器,使其生效。

@Overridepublic void addInterceptors(InterceptorRegistry registry) {// addPathPatterns("/**") 表示攔截所有的請求,// excludePathPatterns("/login", "/register") 表示除了登陸與注冊之外,因為登陸注冊不需要登陸也可以訪問registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/login", "/register");super.addInterceptors(registry); //較新Spring Boot的版本中這里可以直接去掉,否則會報錯}

? ? 3,addPathPatterns 用來設置攔截路徑,excludePathPatterns 用來設置白名單,也就是不需要觸發這個攔截器的路徑。

? ? 完整代碼:

import com.impte.study.config.interceptors.LoginInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration public class WebConfigurer implements WebMvcConfigurer {@Autowiredprivate LoginInterceptor loginInterceptor;// 這個方法是用來配置靜態資源的,比如html,js,css,等等@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {}// 這個方法用來注冊攔截器,我們自己寫好的攔截器需要通過這里添加注冊才能生效@Overridepublic void addInterceptors(InterceptorRegistry registry) {// addPathPatterns("/**") 表示攔截所有的請求,// excludePathPatterns("/login", "/register") 表示除了登陸與注冊之外,因為登陸注冊不需要登陸也可以訪問registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/login", "/register");} }

五,總結

? ? 我在這里只是用登陸的例子來展現來展現攔截器的基本使用,攔截器用途很廣,比如可以用來進行接口權限控制。如果我的文章對你有幫助,請關注一波,CSDN新人駕到,還望各路大神多多照顧!

總結

以上是生活随笔為你收集整理的Spring Boot拦截器配置拦截登陆的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。