日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring Security之默認的過濾器鏈及自定義Filter操作

瀏覽:32日期:2023-07-07 11:46:06
Spring Security 過濾器鏈及自定義Filter別名 類名稱 Namespace Element or Attribute CHANNEL_FILTER ChannelProcessingFilter http/intercept-url@requires-channel SECURITY_CONTEXT_FILTER SecurityContextPersistenceFilter http CONCURRENT_SESSION_FILTER ConcurrentSessionFilter session-management/concurrency-control HEADERS_FILTER HeaderWriterFilter http/headers CSRF_FILTER CsrfFilter http/csrf LOGOUT_FILTER LogoutFilter http/logout X509_FILTER X509AuthenticationFilter http/x509 PRE_AUTH_FILTER AbstractPreAuthenticatedProcessingFilter( Subclasses) N/A CAS_FILTER CasAuthenticationFilter N/A FORM_LOGIN_FILTER UsernamePasswordAuthenticationFilter http/form-login BASIC_AUTH_FILTER BasicAuthenticationFilter http/http-basic SERVLET_API_SUPPORT_FILTER SecurityContextHolderAwareRequestFilter http/@servlet-api-provision JAAS_API_SUPPORT_FILTER JaasApiIntegrationFilter http/@jaas-api-provision REMEMBER_ME_FILTER RememberMeAuthenticationFilter http/remember-me ANONYMOUS_FILTER AnonymousAuthenticationFilter http/anonymous SESSION_MANAGEMENT_FILTER SessionManagementFilter session-management EXCEPTION_TRANSLATION_FILTER ExceptionTranslationFilter http FILTER_SECURITY_INTERCEPTOR FilterSecurityInterceptor http SWITCH_USER_FILTER SwitchUserFilter N/A

過濾器順序從上到下

自定義 Filter

自定義的 Filter 建議繼承 GenericFilterBean,本文示例:

package com.example.filter;import org.springframework.web.filter.GenericFilterBean;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import java.io.IOException;/** * @author 咸魚 * @date 2019-05-26 18:02 */public class BeforeLoginFilter extends GenericFilterBean { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println('在 UsernamePasswordAuthenticationFilter 前調用');chain.doFilter(request, response); }}配置自定義 Filter 在 Spring Security 過濾器鏈中的位置

配置很簡單,本文示例:

@Override protected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers('/').permitAll().antMatchers('/user/**').hasAuthority('USER').and().formLogin().loginPage('/login').defaultSuccessUrl('/user').and().logout().logoutUrl('/logout').logoutSuccessUrl('/login');// 在 UsernamePasswordAuthenticationFilter 前添加 BeforeLoginFilterhttp.addFilterBefore(new BeforeLoginFilter(), UsernamePasswordAuthenticationFilter.class);// 在 CsrfFilter 后添加 AfterCsrfFilterhttp.addFilterAfter(new AfterCsrfFilter(), CsrfFilter.class); }

說明:

HttpSecurity 有三個常用方法來配置:

addFilterBefore(Filter filter, Class<? extends Filter> beforeFilter)

在 beforeFilter 之前添加 filter

addFilterAfter(Filter filter, Class<? extends Filter> afterFilter)

在 afterFilter 之后添加 filter

addFilterAt(Filter filter, Class<? extends Filter> atFilter)

在 atFilter 相同位置添加 filter, 此 filter 不覆蓋 filter

通過在不同 Filter 的 doFilter() 方法中加斷點調試,可以判斷哪個 filter 先執行,從而判斷 filter 的執行順序 。

spring security添加自定義過濾器

1、定義自己的過濾器

2、指定位置,通過HttpSecurity的方法指定

定義過濾器

package com.qiudaozhang.springsecurity.filter;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class RequestHeadCheckFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {var httpRequest = (HttpServletRequest) servletRequest;var httpResponse = (HttpServletResponse) servletResponse;String requestId = httpRequest.getHeader('Request-id');if(requestId == null || requestId.isBlank()) { httpResponse.setStatus(HttpServletResponse.SC_BAD_REQUEST); return;}filterChain.doFilter(servletRequest,servletResponse); }}

package com.qiudaozhang.springsecurity.filter;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class RequestParamCheckFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {var httpRequest = (HttpServletRequest) servletRequest;var httpResponse = (HttpServletResponse) servletResponse;String timestamp = httpRequest.getParameter('timestamp');if(timestamp == null || timestamp.isBlank()) { httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN); return;}filterChain.doFilter(servletRequest,servletResponse); }}指定位置

HttpSecurity中有兩個方法,指定過濾器的位置,一個指定在誰前面,一個指定在誰后面。

public HttpSecurity addFilterAfter(Filter filter, Class<? extends Filter> afterFilter) { this.comparator.registerAfter(filter.getClass(), afterFilter); return this.addFilter(filter); } public HttpSecurity addFilterBefore(Filter filter, Class<? extends Filter> beforeFilter) { this.comparator.registerBefore(filter.getClass(), beforeFilter); return this.addFilter(filter); }

package com.qiudaozhang.springsecurity.config;import com.qiudaozhang.springsecurity.filter.RequestHeadCheckFilter;import com.qiudaozhang.springsecurity.filter.RequestParamCheckFilter;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;@Configurationpublic class ProjectConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception {http.addFilterBefore(new RequestHeadCheckFilter(),BasicAuthenticationFilter.class).addFilterAfter(new RequestParamCheckFilter(),BasicAuthenticationFilter.class).authorizeRequests().anyRequest().permitAll(); }}測試

準備一個端點測試

package com.qiudaozhang.springsecurity.controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloController { @GetMapping('hello') public String hello () {return 'hello'; }}

Spring Security之默認的過濾器鏈及自定義Filter操作

當前沒有傳遞timestamp參數,所以參照約定,過濾器直接給出403.

Spring Security之默認的過濾器鏈及自定義Filter操作

當前頭部信息和參數信息都提供了,檢測通過。

實際應用場景 檢測相關的頭部,參數等等信息日志過濾器,將所有請求的相關數據記錄下來特殊的權限校驗等等。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩一区二区三区在线免费观看| 国产亚洲一区二区三区啪| 91亚洲精品在看在线观看高清| 国产一级一区二区| 最新亚洲一区| 蜜桃91丨九色丨蝌蚪91桃色| 色8久久久久| 国产精品免费精品自在线观看| 国产日韩一区二区三区在线| 国产美女精品视频免费播放软件| 国产精品手机在线播放| 狠狠久久伊人| 女同性一区二区三区人了人一| 一区二区三区四区在线观看国产日韩| 蜜臀久久99精品久久一区二区 | 日韩高清中文字幕一区| 7m精品国产导航在线| 国产高清视频一区二区| 四虎成人av| 免费在线观看日韩欧美| 国产精品久久久久久久久久久久久久久 | 999国产精品视频| 国产亚洲午夜| 亚洲精品亚洲人成在线观看| 日韩精品亚洲aⅴ在线影院| 久久只有精品| 激情婷婷综合| 国产亚洲精品美女久久| 日本精品影院| 欧美日韩国产一区二区在线观看| 91亚洲国产| 亚洲欧美激情诱惑| 免费在线成人| 亚洲一区av| 蜜桃成人av| 国产精品午夜一区二区三区| 亚洲黄页一区| 欧美www视频在线观看| 999国产精品| 欧美交a欧美精品喷水| 99国产精品私拍| 老鸭窝一区二区久久精品| 国产精品日韩| 99视频精品视频高清免费| 国产亚洲人成a在线v网站| 日韩午夜电影| 高潮久久久久久久久久久久久久| 视频一区在线播放| 色欧美自拍视频| 91精品在线免费视频| 国产精品美女| 黄色亚洲免费| 亚洲91精品| 国产欧美日韩在线一区二区 | 99视频精品视频高清免费| 欧美激情五月| 国产毛片精品久久| 亚洲精品在线a| 麻豆久久精品| 鲁大师影院一区二区三区| 国产白浆在线免费观看| 神马日本精品| 国产精品黄网站| 天堂av一区| 国产色99精品9i| 久久精品99国产精品日本| 性欧美长视频| 日韩精彩视频在线观看| 国产精品巨作av| 精品一二三区| 亚洲1234区| 五月天激情综合网| 日韩在线卡一卡二| 久久精品99国产精品| 国产欧美日韩精品一区二区免费 | 国产精品任我爽爆在线播放| 里番精品3d一二三区| 国产精品不卡| 红桃视频亚洲| 日韩av网站在线免费观看| 麻豆视频久久| 91亚洲自偷观看高清| 久久国产高清| 成人一区而且| 亚洲开心激情| 98精品久久久久久久| 一区二区电影| 免费不卡中文字幕在线| 日韩精品中文字幕一区二区| 精品深夜福利视频| 免费美女久久99| 高清日韩中文字幕| 亚洲免费福利一区| 久久精品99久久无色码中文字幕| 日韩福利视频导航| 国产在线欧美| 免费在线观看一区| 一区二区三区国产在线| 久久福利在线| 久久激情中文| 日韩精品一卡二卡三卡四卡无卡| 欧美aa在线视频| 日韩中文在线电影| 欧美手机在线| 日本欧美在线| 精品久久电影| 国产免费av国片精品草莓男男| 亚洲四虎影院| 日本不卡的三区四区五区| 国产网站在线| 欧美中文高清| 日韩一区精品| 天堂资源在线亚洲| 日本一区二区三区中文字幕| 成人亚洲欧美| 日韩有吗在线观看| 吉吉日韩欧美| zzzwww在线看片免费| 丝袜亚洲另类欧美| 久久伊人国产| 在线亚洲成人| 日韩欧美三级| 日韩动漫一区| 欧美色综合网| 在线观看一区| 久久在线免费| 国产精品不卡| 日韩高清一区在线 | 日韩视频网站在线观看| 久久国产欧美日韩精品| 日韩中文字幕区一区有砖一区| 国产精品美女午夜爽爽| 国产精品主播| 欧美午夜三级| 在线综合亚洲| 狠狠干成人综合网| 欧美日韩国产一区精品一区| 日韩视频精品在线观看| 久久久国产精品一区二区中文| 美日韩一区二区三区| 日韩不卡手机在线v区| 综合激情一区| 在线精品观看| 国产欧美激情| 国产一区二区三区探花| 精品精品久久| 国产精品亚洲欧美日韩一区在线 | 国产精品久久久久久久久久久久久久久| 日韩一区精品字幕| 国产精品婷婷| 午夜精品影视国产一区在线麻豆| 天海翼精品一区二区三区| 久久国产精品亚洲77777| 国产精品久久久久9999高清| 国产精品国码视频| 国产传媒在线| 午夜日韩av| 婷婷国产精品| 国产精品毛片久久久| 精品在线网站观看| 吉吉日韩欧美| 免费国产自线拍一欧美视频| 日韩久久一区| 国产精品蜜月aⅴ在线| 免费日韩av| 国产精品毛片久久久| 欧美日韩国产v| 久久大逼视频| 国产乱子精品一区二区在线观看| 伊人久久亚洲美女图片| 日韩高清不卡在线| 日韩免费在线| 欧美二区视频| 国产精品玖玖玖在线资源| 亚洲精品四区| 国产精品专区免费| 亚洲2区在线| 久久久人人人| 国产日产精品一区二区三区四区的观看方式| 欧美视频久久| 国产精品社区| 日韩久久视频| 精品国产亚洲日本| 18国产精品| 亚洲欧美成人综合| 免费一级欧美片在线观看网站| 欧美va天堂在线| 只有精品亚洲| 丝袜a∨在线一区二区三区不卡| 久久亚洲精精品中文字幕| 亚洲自拍另类| 激情婷婷综合| 欧美国产偷国产精品三区| 国产激情在线播放| 亚洲图片久久| 亚洲视频国产精品| 999在线观看精品免费不卡网站| 福利一区和二区| 久久国产成人午夜av影院宅| 成人日韩av|