Avatar
0
Hihi Teacher
Hihi Teacher
Hỏi về cách hoạt động của Filter trong Spring Security
Hi xin chào mọi người!
addFilteraddFilterBeforeaddFilterAfter
.
Em có một câu hỏi muốn hỏi mọi người là:
TH1addFilter
thì custom filter sẽ vị trí nào trong dãy các filter của Spring Security?
TH2addFilterBeforeaddFilterAfter
thì filter được chỉ định mà custom filter đứng trước hoặc sau có hoạt động hay không (Với TH Before em có thắc mắc là khi custom filter được chạy thì nó sẽ thay thế filter được chỉ định hay khi nó chạy xong thì filter chỉ định phải chạy 1 lần nữa )?
Em cám ơn mọi người !
  • Answer
springsecurity
Remain: 5
3 Answers
Avatar
tvd12 Enlightened
tvd12 Enlightened
addFilterperformBuild
nên khi mà em addFilterBefore, addFilterAfter bản chất là nó sẽ cấp cho mỗi thằng 1 cái order, đến khi build nó sẽ sort theo order đó. Vậy nên:
  1. TH1 em sẽ khó có thể biết filter em add vào sẽ nằm ở index bao nhiêu và khi nào được chạy
  2. anh chưa hiểu ý em, nhưng em cứ add filter vào là nó sẽ chạy em ạ
  • 0
  • Reply
Avatar
Hihi Teacher
Hihi Teacher
Cám ơn anh đã trả lời.Xin lỗi anh vì cách diễn đạt của em khó hiểu.
TH 2 của em là :
  1. Em có 1 customFilter extends UsernamePasswordAuthenticationFilter
  2. Sau đó em dùng hàm addFilterBefore(customFilter,UsernamePasswordAuthenticationFilter.class)
customFilterUsernamePasswordAuthenticationFilterUsernamePasswordAuthenticationFiltercustomFilterUsernamePasswordAuthenticationFilter
ạ ?
P/s: Tại cái khái niệm add trước,add sau của Spring security làm em khó hiểu quá a ạ :(
 
  • 0
  • Reply
Avatar
monkey Enlightened
monkey Enlightened
nó sẽ gọi UsernamePasswordAuthenticationFilter sau đó đến customFilter em ạ, sẽ không có cái nào bị thay thế hoặc bỏ sót em ạ.
  • 0
  • Reply
Anh cho em hỏi là ví dụ của em dùng add trước
=> addFilterBefore(customFilter,UsernamePasswordAuthenticationFilter.class)
mà fiter mặc định vẫn chạy trước customFilter hả anh?
 –  Hihi 1634708689000
Nó chạy sau em ạ, vì em dùng hàm addFilterBefore thì customFilter sẽ được cho lên trước em ạ
 –  monkey 1634778960000
Dạ vậy thì đúng như em hiểu rồi ạ.Nhưng từ lúc em tìm hiểu đến cái này thì em có một thắc mắc mong anh giải đáp đó là:
Nếu customFilter đã xử lí hết (ở đây là xác thực người dùng ) vậy thằng mặc định sẽ làm gì sau đó ạ?
Cám ơn anh rất nhiều vì đã trả lời em ạ !
 –  Hihi 1634854984000
Nó vẫn sẽ tiếp tục chạy hết các logic của nó em ạ, ví xác thực người dùng xong thì cái filter mặc định là in log, thì nó sẽ in ra log em ạ
 –  monkey 1635271170000