מסנן מותאם אישית בשרשרת מסנני האבטחה הקפיצית

1. סקירה כללית

במאמר מהיר זה נתמקד בכתיבת פילטר מותאם אישית עבור רשת המסננים של Spring Security.

2. יצירת המסנן

Spring Security מספק מספר מסננים כברירת מחדל, ולרוב זה מספיק.

אך כמובן שלעתים יש צורך ליישם פונקציונליות חדשה באמצעות יצירת פילטר חדש לשימוש בשרשרת.

נתחיל ביישום ה- org.springframework.web.filter.GenericFilterBean.

ה GenericFilterBean הוא פשוט javax.servlet.Filter יישום יישום מודע לאביב.

לגבי היישום - עלינו ליישם שיטה אחת בלבד:

מחלקה ציבורית CustomFilter מרחיבה את GenericFilterBean {@Override public void doFilter (בקשת ServletRequest, תגובת ServletResponse, שרשרת FilterChain) זורק IOException, ServletException {chain.doFilter (בקשה, תגובה); }}

3. שימוש במסנן בתצורת האבטחה

אנו חופשיים לבחור בתצורת XML או בתצורת Java כדי לחבר את המסנן לתצורת Spring Security.

3.1. תצורת Java

אתה יכול לרשום את המסנן בתכנות העוקף את להגדיר שיטה מ מתאם WebSecurityConfigurer. לדוגמה, זה עובד עם ה- addFilterAfter שיטה על א HttpSecurity למשל:

המחלקה הציבורית @Configuration CustomWebSecurityConfigurerAdapter מרחיב את WebSecurityConfigurerAdapter {@Override מוגן חלל להגדיר (HttpSecurity http) זורק חריג {http.addFilterAfter (CustomFilter חדש (), BasicAuthenticationFilter.class); }} 

ישנן מספר שיטות אפשריות:

  • addFilterBefore (פילטר, מחלקה) - מוסיף א לְסַנֵן לפני מיקום המסנן שצוין מעמד
  • addFilterAfter (פילטר, מחלקה) - מוסיף א לְסַנֵן לאחר מיקום המסנן שצוין מעמד
  • addFilterAt (פילטר, מחלקה) - מוסיף א לְסַנֵן במיקום המסנן שצוין מעמד
  • addFilter (פילטר) - מוסיף א לְסַנֵן זה חייב להיות מופע של אחד מהמסננים שמספק Spring Security או הרחיב אותו

3.2. תצורת XML

אתה יכול להוסיף את המסנן לשרשרת באמצעות ה- מסנן מותאם אישית תג ואחד מהשמות האלה כדי לציין את מיקום המסנן שלך. לדוגמה, ניתן לציין זאת על ידי לאחר תְכוּנָה:

להלן כל התכונות כדי לציין בדיוק את המקום שמסנן שלך בערימה:

  • לאחר - מתאר את המסנן מיד שלאחריו יונח פילטר מותאם אישית בשרשרת
  • לפני - מגדיר את הפילטר שלפניו יש להניח את הפילטר שלנו בשרשרת
  • עמדה - מאפשר החלפת מסנן סטנדרטי במיקום המפורש במסנן מותאם אישית

4. מסקנה

במאמר מהיר זה, יצרנו פילטר מותאם אישית וחיווטנו אותו לשרשרת המסננים של Spring Security.

כמו תמיד, כל דוגמאות הקוד זמינות בפרויקט Github לדוגמה.


$config[zx-auto] not found$config[zx-overlay] not found