SpringBoot登錄攔截配置詳解(實(shí)測(cè)可用)
背景:寫一個(gè)用戶登錄攔截,在網(wǎng)上找了一圈沒找到好用的,于是自己試驗(yàn)了一下,總結(jié)出來,分享給大家。
1.自定義登錄攔截器LoginInterceptor
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 這里是關(guān)鍵
User loginUser = (User) request.getSession().getAttribute("user");
if (loginUser == null) {
// 未登錄拋出異常,交給統(tǒng)一異常處理器處理
throw new CustomException(ResultCode.USER_NOT_LOGIN);
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
2.在WebConfigurer中添加攔截器
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//注冊(cè)TestInterceptor攔截器
registry.addInterceptor(new LoginInterceptor())
.addPathPatterns("/**")
// 排除登錄注冊(cè)等接口,注意這里的格式是 /**/xxx
.excludePathPatterns("/**/login", "/**/register");
}
}
3.登錄接口
/**
* 登錄
* @return 用戶信息
*/
public User login(UserVO userVO. HttpServlet) {
String username = userVO.getUsername();
String password = userVO.getPassword();
User user = userMapper.findByUsernameAndPassword(username, password);
// 未找到用戶
if(user == null) {
throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);
}
// 設(shè)置session中的用戶信息
SessionUtils.setSessionAttribute("user", user);
return user;
}
文中的代碼細(xì)節(jié)不一一列舉了,這里重點(diǎn)討論的攔截器,感興趣的朋友可以私聊我獲取其他代碼。
結(jié)果
未登錄的情況下,請(qǐng)求普通接口提示未登錄。

請(qǐng)求登錄接口。

登錄后再去請(qǐng)求普通接口,返回正常。
-END-
到此這篇關(guān)于SpringBoot登錄攔截配置詳解(實(shí)測(cè)可用)的文章就介紹到這了,更多相關(guān)SpringBoot登錄攔截內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談Java程序運(yùn)行機(jī)制及錯(cuò)誤分析
這篇文章主要主要介紹了Java虛擬機(jī)(JVM)的有關(guān)內(nèi)容以及Java程序的運(yùn)行機(jī)制和錯(cuò)誤分析,需要的朋友可以了解下。2017-09-09
Spring?Boot?3.1中整合Spring?Security和Keycloak的方法
本文介紹在最新的SpringBoot3.1版本之下,如何將Keycloak和Spring?Security一起跑起來,文中結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-06-06
MyBatis的collection和association的使用解讀
這篇文章主要介紹了MyBatis的collection和association的使用解讀2023-12-12
一篇文章帶你了解spring事務(wù)失效的多種場(chǎng)景
在日常編碼過程中常常涉及到事務(wù),在前兩天看到一篇文章提到了Spring事務(wù),那么在此總結(jié)下在Spring環(huán)境下事務(wù)失效的幾種原因.2021-09-09
如何從eureka獲取服務(wù)的ip和端口號(hào)進(jìn)行Http的調(diào)用
這篇文章主要介紹了如何從eureka獲取服務(wù)的ip和端口號(hào)進(jìn)行Http的調(diào)用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
簡述Java中進(jìn)程與線程的關(guān)系_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
在 Java 語言中,對(duì)進(jìn)程和線程的封裝,分別提供了 Process 和 Thread 相關(guān)的一些類。本文首先簡單的介紹如何使用這些類來創(chuàng)建進(jìn)程和線程2017-05-05
Java實(shí)現(xiàn)折半插入排序算法的示例代碼
折半插入排序(Binary Insertion Sort)是對(duì)插入排序算法的一種改進(jìn)。不斷的依次將元素插入前面已排好序的序列中。本文將利用Java語言實(shí)現(xiàn)這一排序算法,需要的可以參考一下2022-08-08
spring?boot如何配置靜態(tài)路徑詳解(404出現(xiàn)的坑)
這篇文章主要給大家介紹了關(guān)于spring?boot如何配置靜態(tài)路徑的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02
說說@ModelAttribute在父類和子類中的執(zhí)行順序
這篇文章主要介紹了@ModelAttribute在父類和子類中的執(zhí)行順序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06

