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

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

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

瀏覽:35日期: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久久,三上悠亚国产精品一区二区三区
在线亚洲观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 中文字幕亚洲影视| 亚洲主播在线| 视频一区视频二区在线观看| 欧美一区=区| 亚洲一区欧美| 日韩精品免费观看视频| 亚洲精品看片| 国产日韩高清一区二区三区在线| 亚洲一区欧美| 国产无遮挡裸体免费久久| 你懂的国产精品| 91亚洲国产高清| 99久久九九| 亚洲欧美高清| 日韩国产一区二| 久久在线91| 久久久久久免费视频| 日韩午夜电影| 香蕉久久一区| 欧美aaaaaa午夜精品| 亚洲伊人av| 欧美日韩一二三四| 蜜桃一区二区三区在线| 香蕉久久一区| 精品国产一区二区三区av片| 午夜精品成人av| 日韩中文字幕区一区有砖一区| 日韩欧美在线精品| 黄色精品视频| 夜夜精品视频| 国产情侣一区| 成人看片网站| 亚洲开心激情| 色欧美自拍视频| 亚洲中午字幕| 久久久精品区| 午夜在线播放视频欧美| 国产精品亚洲一区二区在线观看| 国产aⅴ精品一区二区三区久久| 啪啪国产精品| 久久麻豆视频| 亚洲欧美一级| 国产精品天天看天天狠| 肉色欧美久久久久久久免费看| 激情综合网站| 欧美亚洲自偷自偷| 久久精品亚洲人成影院| 亚洲精品大片| 日欧美一区二区| 欧美国产美女| 亚洲精品麻豆| 中文字幕高清在线播放| 三级在线观看一区二区| 国产日韩亚洲欧美精品| 亚洲视频综合| 国产人成精品一区二区三| 婷婷国产精品| 国产精品天天看天天狠| 91成人超碰| 国产精品久久久久久久久久齐齐| 久久久久久久久丰满| 久久激情av| 欧美日韩激情| 麻豆精品在线| 一二三区精品| 91精品国产福利在线观看麻豆| 日韩高清二区| 黄色aa久久| 亚洲精品乱码日韩| 国产在线|日韩| 国产欧美视频在线| 亚洲一区日韩| 日韩av福利| 国产精品极品国产中出| 另类亚洲自拍| 亚洲成人国产| 精品国产亚洲一区二区三区| 蜜臀久久久99精品久久久久久| 高清不卡亚洲| 久久免费福利| 欧美日韩亚洲三区| 天使萌一区二区三区免费观看| 伊人久久在线| 国产一精品一av一免费爽爽| 国产一区导航| 国产精品亚洲一区二区三区在线观看| 欧美亚洲三级| 蜜臀av在线播放一区二区三区| 国产精品av久久久久久麻豆网| 激情中国色综合| 国产精品天堂蜜av在线播放| 丝袜诱惑制服诱惑色一区在线观看 | 久久久777| 国产精品资源| 亚洲精品黄色| 日韩精品一二三| 亚洲午夜黄色| 日韩中文影院| 香蕉成人av| 国产网站在线| 国产白浆在线免费观看| 国产精品第一| 久久狠狠亚洲综合| 日韩精品免费视频人成| 亚洲色图国产| 99在线观看免费视频精品观看| 91精品久久久久久久久久不卡| 中文字幕高清在线播放| 麻豆视频在线观看免费网站黄| 国产不卡精品| 在线天堂资源www在线污| 高清一区二区三区av| 国产精品videosex极品| 国产精品亚洲综合色区韩国| 欧美日韩亚洲一区三区| 日韩av二区在线播放| 日韩三级精品| 欧美亚洲二区| 国产亚洲欧美日韩精品一区二区三区 | 国产精品久久| 国产精品115| 欧美日韩亚洲一区在线观看| 亚欧成人精品| 欧美日韩精品一区二区三区视频 | 在线看片福利| 岛国精品一区| 国产在线看片免费视频在线观看| 国产精品2023| 国产在线一区不卡| 精品国产免费人成网站| 九九精品调教| 久久精品123| 国产高清久久| 亚洲一区日本| 亚洲精品韩国| 欧美欧美黄在线二区| 久久av免费| 色婷婷色综合| 激情综合网址| 亚洲一区欧美二区| 亚洲精品韩国| 国产精品一在线观看| 久久国产麻豆精品| 国产一区二区三区亚洲| 三上悠亚国产精品一区二区三区| 久久久精品五月天| 99成人在线| 日韩制服丝袜av| 91欧美日韩在线| 精品国产18久久久久久二百| 日韩欧美一区二区三区免费看| 欧美一区二区三区高清视频| 亚洲成人日韩| 日韩久久一区| 精品久久在线| 亚洲福利精品| 综合一区av| 日本午夜精品久久久久| 你懂的国产精品永久在线| 亚洲成人va| 亚洲综合激情在线| 麻豆视频一区二区| 国模 一区 二区 三区| 免费国产亚洲视频| 欧美精品不卡| 99精品在线免费在线观看| 免费视频久久| 国产精品亚洲欧美一级在线| 秋霞影院一区二区三区| 三级欧美韩日大片在线看| 久久99青青| 亚洲精品成人| 日本不卡的三区四区五区| 精品网站999| 99国产精品99久久久久久粉嫩| 88久久精品| 久久蜜桃精品| 日韩av午夜在线观看| 日韩欧美在线中字| 日韩动漫一区| 亚洲二区精品| 欧美韩一区二区| 亚洲福利精品| 国产区精品区| 红桃视频欧美| 麻豆精品久久| 三级欧美韩日大片在线看| 免费在线日韩av| 免费不卡在线视频| 亚洲一级少妇| 国产探花一区| 亚洲激精日韩激精欧美精品| 久久xxx视频| 日韩在线a电影| 91综合网人人| 日本不卡一区二区| 激情欧美日韩一区| 久久精品天堂|