spring boot 配置Filter過濾器的方法
Filter 過濾器是web開發(fā)中很重要的一個(gè)組件,下面以一個(gè)session登陸的例子介紹下spring boot中如何使用Filter
首先要準(zhǔn)備一個(gè)實(shí)現(xiàn)了Filter的接口的類 SessionFilter:
import org.slf4j.LoggerFactory; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by mazhenhua on 2016/12/27. * * 過濾器 */ public class SessionFilter implements Filter { private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SessionFilter.class); /** * 封裝,不需要過濾的list列表 */ protected static List<Pattern> patterns = new ArrayList<Pattern>(); @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) servletRequest; HttpServletResponse httpResponse = (HttpServletResponse) servletResponse; logger.info("aaaaaaaaaa"); String url = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length()); if (url.startsWith("/") && url.length() > 1) { url = url.substring(1); } if (isInclude(url)){ chain.doFilter(httpRequest, httpResponse); return; } else { HttpSession session = httpRequest.getSession(); if (session.getAttribute("") != null){ // session存在 chain.doFilter(httpRequest, httpResponse); return; } else { // session不存在 準(zhǔn)備跳轉(zhuǎn)失敗 /* RequestDispatcher dispatcher = request.getRequestDispatcher(path); dispatcher.forward(request, response);*/ chain.doFilter(httpRequest, httpResponse); return; } } } @Override public void destroy() { } /** * 是否需要過濾 * @param url * @return */ private boolean isInclude(String url) { for (Pattern pattern : patterns) { Matcher matcher = pattern.matcher(url); if (matcher.matches()) { return true; } } return false; } }
實(shí)際開發(fā)中往往有很多請(qǐng)求要直接請(qǐng)求進(jìn)來,不需要鑒權(quán)登陸的,所以代碼中過濾掉這種請(qǐng)求的代碼,裝進(jìn)list就好了。
/** * 配置過濾器 * @return */ @Bean public FilterRegistrationBean someFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(sessionFilter()); registration.addUrlPatterns("/*"); registration.addInitParameter("paramName", "paramValue"); registration.setName("sessionFilter"); return registration; } /** * 創(chuàng)建一個(gè)bean * @return */ @Bean(name = "sessionFilter") public Filter sessionFilter() { return new SessionFilter(); }
經(jīng)過上面這倆步的配置,過濾器基本上就可以了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決SpringBoot項(xiàng)目啟動(dòng)后網(wǎng)頁顯示Please sign in的問題
這篇文章主要介紹了解決SpringBoot項(xiàng)目啟動(dòng)后網(wǎng)頁顯示Please sign in的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04Java實(shí)現(xiàn)的簡(jiǎn)單圖片上傳功能示例
這篇文章主要介紹了Java實(shí)現(xiàn)的簡(jiǎn)單圖片上傳功能,結(jié)合實(shí)例形式分析了java圖片傳輸相關(guān)的檢驗(yàn)、傳輸、接收等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09詳解Spring依賴注入的三種方式使用及優(yōu)缺點(diǎn)
這篇文章主要介紹了spring依賴注入的三種方式的使用方法,以及優(yōu)缺點(diǎn)的介紹,通過代碼示例介紹的非常詳細(xì),感興趣的小伙伴可以參考一下2023-04-04idea全局設(shè)置Maven配置的實(shí)現(xiàn)步驟
本文主要介紹了idea全局設(shè)置Maven配置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07java實(shí)現(xiàn)系統(tǒng)多級(jí)文件夾復(fù)制
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)系統(tǒng)多級(jí)文件夾復(fù)制,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08