[14834] 2019-11-19_甲方视角:SHIRO-721临时修复方案

文档创建者:s7ckTeam
浏览次数:3
最后更新:2025-01-18
2019-11-19_甲方视角:SHIRO-721临时修复方案 S H I R O - 7 2 1 V e n s c o r   F r e e B u f   2 0 1 9 - 1 1 - 1 9 0 x 0 0   1 4 S h i r o R C E S h i r o p o c S h i r o 0 x 0 1   h t t p s : / / w w w . a n q u a n k e . c o m / p o s t / i d / 1 9 2 8 1 9 1 p a s s 2 线 p a s s 3 W A F E X P S h i r o E X P W A F p a s s S h i r o r e m e m b e r M e S h i r o F i l t e r F i l t e r r e m e m b e r M e r e m e m b e r M e 1 F i l t e r S h i r o F i l t e r c o o k i e r e m e m b e r M e 2 S h i r o   F i l t e r r e m e m b e r M e 1 f i l e r 2 S h i r o F i l t e r 1 . 1   S h i r o F i l t e r p o c F i l t e r S h i r o F i l t e r F a c t o r y B e a n $ S p r i n g S h i r o F i l t e r f i n a l   C l a s s 1 . 2   F i l t e r f i n a l   C l a s s S h i r o < d e p e n d e n c y >         < g r o u p I d > o r g . a p a c h e . s h i r o < / g r o u p I d >         < a r t i f a c t I d > s h i r o - c o r e < / a r t i f a c t I d > < / d e p e n d e n c y > p r i v a t e   s t a t i c   f i n a l   c l a s s   S p r i n g S h i r o F i l t e r   e x t e n d s   A b s t r a c t S h i r o F i l t e r   {                 p r o t e c t e d   S p r i n g S h i r o F i l t e r ( W e b S e c u r i t y M a n a g e r   w e b S e c u r i t y M a n a g e r ,   F i l t e r C h a i n R e s o l v e r   r e s o l v e r )   {                         s u p e r ( ) ;                         i f   ( w e b S e c u r i t y M a n a g e r   = =   n u l l )   {                                 t h r o w   n e w   I l l e g a l A r g u m e n t E x c e p t i o n ( " W e b S e c u r i t y M a n a g e r   p r o p e r t y   c a n n o t   b e   n u l l . " ) ;                         }                         s e t S e c u r i t y M a n a g e r ( w e b S e c u r i t y M a n a g e r ) ;                         i f   ( r e s o l v e r   ! =   n u l l )   {                                 s e t F i l t e r C h a i n R e s o l v e r ( r e s o l v e r ) ;                         }                 }         } < f i l t e r >                 < ! - - f i l t e r   - - >                 < f i l t e r - n a m e > s h i r o F i l t e r < / f i l t e r - n a m e >                 < f i l t e r - c l a s s > o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . D e l e g a t i n g F i l t e r P r o x y < / f i l t e r - c l a s s >
S h i r o F i l t e r F a c t o r y B e a n 使 S h i r o   F i l t e r r e m e m b e r M e p a c t c h 1 r e q u e s t S e r v l e t R e q u e s t c o o k i e t o m c a t R e q u e s t F a c a d e 2 R e q u e s t F a c a d e p r o v i d e d   m a v e n t o m c a t 0 x 0 2   p a t c h 1                 < i n i t - p a r a m >                         < p a r a m - n a m e > t a r g e t F i l t e r L i f e c y c l e < / p a r a m - n a m e >                         < p a r a m - v a l u e > t r u e < / p a r a m - v a l u e >                 < / i n i t - p a r a m > < / f i l t e r > < b e a n   i d = " s h i r o F i l t e r "   c l a s s = " o r g . a p a c h e . s h i r o . s p r i n g . w e b . S h i r o F i l t e r F a c t o r y B e a n " >         < ! - - - - > < / b e a n > i m p o r t   o r g . a p a c h e . s h i r o . m g t . S e c u r i t y M a n a g e r ; i m p o r t   o r g . a p a c h e . s h i r o . s p r i n g . w e b . S h i r o F i l t e r F a c t o r y B e a n ; i m p o r t   o r g . a p a c h e . s h i r o . w e b . f i l t e r . m g t . F i l t e r C h a i n M a n a g e r ; i m p o r t   o r g . a p a c h e . s h i r o . w e b . f i l t e r . m g t . F i l t e r C h a i n R e s o l v e r ; i m p o r t   o r g . a p a c h e . s h i r o . w e b . f i l t e r . m g t . P a t h M a t c h i n g F i l t e r C h a i n R e s o l v e r ; i m p o r t   o r g . a p a c h e . s h i r o . w e b . m g t . W e b S e c u r i t y M a n a g e r ; i m p o r t   o r g . a p a c h e . s h i r o . w e b . s e r v l e t . A b s t r a c t S h i r o F i l t e r ; i m p o r t   o r g . s p r i n g f r a m e w o r k . b e a n s . f a c t o r y . B e a n I n i t i a l i z a t i o n E x c e p t i o n ; i m p o r t   j a v a x . s e r v l e t . F i l t e r C h a i n ; i m p o r t   j a v a x . s e r v l e t . S e r v l e t E x c e p t i o n ; i m p o r t   j a v a x . s e r v l e t . S e r v l e t R e q u e s t ; i m p o r t   j a v a x . s e r v l e t . S e r v l e t R e s p o n s e ; i m p o r t   j a v a x . s e r v l e t . h t t p . C o o k i e ; i m p o r t   j a v a x . s e r v l e t . h t t p . H t t p S e r v l e t R e q u e s t ; i m p o r t   j a v a . i o . I O E x c e p t i o n ; i m p o r t   j a v a . l a n g . r e f l e c t . F i e l d ; / * *   *   @ a u t h o r :   V e n s c o r   *   @ d a t e :   2 0 1 9 / 1 1 / 1 4   *   @ d e s c r i p t i o n   * / p u b l i c   c l a s s   S a f e S h i r o F i l t e r F a c t o r y B e a n   e x t e n d s   S h i r o F i l t e r F a c t o r y B e a n   {         @ O v e r r i d e         p r o t e c t e d   A b s t r a c t S h i r o F i l t e r   c r e a t e I n s t a n c e ( )   t h r o w s   E x c e p t i o n   {                 S e c u r i t y M a n a g e r   s e c u r i t y M a n a g e r   =   g e t S e c u r i t y M a n a g e r ( ) ;                 i f   ( s e c u r i t y M a n a g e r   = =   n u l l )   {                         S t r i n g   m s g   =   " S e c u r i t y M a n a g e r   p r o p e r t y   m u s t   b e   s e t . " ;                         t h r o w   n e w   B e a n I n i t i a l i z a t i o n E x c e p t i o n ( m s g ) ;                 }                 i f   ( ! ( s e c u r i t y M a n a g e r   i n s t a n c e o f   W e b S e c u r i t y M a n a g e r ) )   {                         S t r i n g   m s g   =   " T h e   s e c u r i t y   m a n a g e r   d o e s   n o t   i m p l e m e n t   t h e   W e b S e c u r i t y M a n a g e r   i n t e r f a c e . " ;                         t h r o w   n e w   B e a n I n i t i a l i z a t i o n E x c e p t i o n ( m s g ) ;                 }                 F i l t e r C h a i n M a n a g e r   m a n a g e r   =   c r e a t e F i l t e r C h a i n M a n a g e r ( ) ;                 / / E x p o s e   t h e   c o n s t r u c t e d   F i l t e r C h a i n M a n a g e r   b y   f i r s t   w r a p p i n g   i t   i n   a                 / /   F i l t e r C h a i n R e s o l v e r   i m p l e m e n t a t i o n .   T h e   A b s t r a c t S h i r o F i l t e r   i m p l e m e n t a t i o n s                 / /   d o   n o t   k n o w   a b o u t   F i l t e r C h a i n M a n a g e r s   -   o n l y   r e s o l v e r s :                 P a t h M a t c h i n g F i l t e r C h a i n R e s o l v e r   c h a i n R e s o l v e r   =   n e w   P a t h M a t c h i n g F i l t e r C h a i n R e s o l v e r ( ) ;                 c h a i n R e s o l v e r . s e t F i l t e r C h a i n M a n a g e r ( m a n a g e r ) ;                 / / N o w   c r e a t e   a   c o n c r e t e   S h i r o F i l t e r   i n s t a n c e   a n d   a p p l y   t h e   a c q u i r e d   S e c u r i t y M a n a g e r   a n d   b u i l t                 / / F i l t e r C h a i n R e s o l v e r .     I t   d o e s n ' t   m a t t e r   t h a t   t h e   i n s t a n c e   i s   a n   a n o n y m o u s   i n n e r   c l a s s                 / / h e r e   -   w e ' r e   j u s t   u s i n g   i t   b e c a u s e   i t   i s   a   c o n c r e t e   A b s t r a c t S h i r o F i l t e r   i n s t a n c e   t h a t   a c c e p t s                 / / i n j e c t i o n   o f   t h e   S e c u r i t y M a n a g e r   a n d   F i l t e r C h a i n R e s o l v e r :                 r e t u r n   n e w   S a f e S h i r o F i l t e r F a c t o r y B e a n . S p r i n g S h i r o F i l t e r ( ( W e b S e c u r i t y M a n a g e r )   s e c u r i t y M a n a g e r ,   c h a i n R e s o l v e r ) ;         }         p r i v a t e   s t a t i c   f i n a l   c l a s s   S p r i n g S h i r o F i l t e r   e x t e n d s   A b s t r a c t S h i r o F i l t e r   {                 p r o t e c t e d   S p r i n g S h i r o F i l t e r ( W e b S e c u r i t y M a n a g e r   w e b S e c u r i t y M a n a g e r ,   F i l t e r C h a i n R e s o l v e r   r e s o l v e r )   {                         i f   ( w e b S e c u r i t y M a n a g e r   = =   n u l l )   {                                 t h r o w   n e w   I l l e g a l A r g u m e n t E x c e p t i o n ( " W e b S e c u r i t y M a n a g e r   p r o p e r t y   c a n n o t   b e   n u l l . " ) ;                         }   e l s e   {                                 t h i s . s e t S e c u r i t y M a n a g e r ( w e b S e c u r i t y M a n a g e r ) ;                                 i f   ( r e s o l v e r   ! =   n u l l )   {                                         t h i s . s e t F i l t e r C h a i n R e s o l v e r ( r e s o l v e r ) ;                                 }                         }                 }                 @ O v e r r i d e
2 S h i r o F i l t e r   B e a n S p r i n g M V C S p r i n g B o o t S h i r o C o n f i g                 @ O v e r r i d e                 p r o t e c t e d   v o i d   d o F i l t e r I n t e r n a l ( S e r v l e t R e q u e s t   s e r v l e t R e q u e s t ,   S e r v l e t R e s p o n s e   s e r v l e t R e s p o n s e ,   F i l t e r C h a i n   c h a i n )   t h r o w s   S e r v l e t E x c e p t i o n ,   I O E x c e p t i o n   {                         H t t p S e r v l e t R e q u e s t   r e q u e s t   =   ( H t t p S e r v l e t R e q u e s t )   s e r v l e t R e q u e s t ;                         C o o k i e [ ]   c o o k i e s   =   r e q u e s t . g e t C o o k i e s ( ) ;                         b o o l e a n   n e e d R e s e t C o o k i e   =   f a l s e ;                         i f   ( c o o k i e s   ! =   n u l l   & &   c o o k i e s . l e n g t h   >   0 )   {                                 f o r   ( C o o k i e   c o o k i e   :   c o o k i e s )   {                                         i f   ( c o o k i e . g e t N a m e ( ) . e q u a l s I g n o r e C a s e ( " r e m e m b e r M e " ) )   {                                                 c o o k i e . s e t V a l u e ( " " ) ;                                                 n e e d R e s e t C o o k i e   =   t r u e ;                                                 b r e a k ;                                         }                                 }                         }                         i f   ( n e e d R e s e t C o o k i e )   {                                 O b j e c t   i n n e r R e q   =   g e t F i e l d ( r e q u e s t ,   " r e q u e s t " ) ;                                 s e t F i e l d ( i n n e r R e q ,   " c o o k i e s " ,   c o o k i e s ) ;                                 s e t F i e l d ( r e q u e s t ,   " r e q u e s t " ,   i n n e r R e q ) ;                         }                         s u p e r . d o F i l t e r I n t e r n a l ( s e r v l e t R e q u e s t ,   s e r v l e t R e s p o n s e ,   c h a i n ) ;                 }                 p u b l i c   v o i d   s e t F i e l d ( O b j e c t   i n s t a n c e ,   S t r i n g   f i e l d N a m e ,   O b j e c t   f i e l d V a l u e )   {                         t r y   {                                 F i e l d   f i e l d   =   i n s t a n c e . g e t C l a s s ( ) . g e t D e c l a r e d F i e l d ( f i e l d N a m e ) ;                                 f i e l d . s e t A c c e s s i b l e ( t r u e ) ;                                 f i e l d . s e t ( i n s t a n c e ,   f i e l d V a l u e ) ;                         }   c a t c h   ( E x c e p t i o n   e )   {                                 t h r o w   n e w   R u n t i m e E x c e p t i o n ( ) ;                         }                 }                 p u b l i c   s t a t i c   O b j e c t   g e t F i e l d ( O b j e c t   i n s t a n c e ,   S t r i n g   f i e l d N a m e )   {                         t r y   {                                 F i e l d   f i e l d   =   i n s t a n c e . g e t C l a s s ( ) . g e t D e c l a r e d F i e l d ( f i e l d N a m e ) ;                                 f i e l d . s e t A c c e s s i b l e ( t r u e ) ;                                 r e t u r n   f i e l d . g e t ( i n s t a n c e ) ;                         }   c a t c h   ( E x c e p t i o n   e )   {                                 t h r o w   n e w   R u n t i m e E x c e p t i o n ( ) ;                         }                 }         } } < f i l t e r >                 < ! - - f i l t e r   - - >                 < f i l t e r - n a m e > s h i r o F i l t e r < / f i l t e r - n a m e >                 < f i l t e r - c l a s s > o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . D e l e g a t i n g F i l t e r P r o x y < / f i l t e r - c l a s s >                 < i n i t - p a r a m >                         < p a r a m - n a m e > t a r g e t F i l t e r L i f e c y c l e < / p a r a m - n a m e >                         < p a r a m - v a l u e > t r u e < / p a r a m - v a l u e >                 < / i n i t - p a r a m > < / f i l t e r > < ! - - S h i r o   B e a n - - > < b e a n   i d = " s h i r o F i l t e r "   c l a s s = " [ ] . S a f e S h i r o F i l t e r F a c t o r y B e a n " >         < ! - - - - > < / b e a n > @ B e a n ( n a m e   =   " s h i r o F i l t e r " ) / / S h i r o F i l t e r F a c t o r y B e a n S a f e S h i r o F i l t e r F a c t o r y B e a n p u b l i c   S a f e S h i r o F i l t e r F a c t o r y B e a n   g e t S h i r o F i l t e r F a c t o r y B e a n ( D e f a u l t W e b S e c u r i t y M a n a g e r   s e c u r i t y M a n a g e r ,                                                                                                                 C a s F i l t e r   c a s F i l t e r )   {         / / S a f e S h i r o F i l t e r F a c t o r y B e a n         / / S h i r o F i l t e r F a c t o r y B e a n   s h i r o F i l t e r F a c t o r y B e a n   =   n e w   S h i r o F i l t e r F a c t o r y B e a n ( ) ;   / /           S a f e S h i r o F i l t e r F a c t o r y B e a n   s h i r o F i l t e r F a c t o r y B e a n   =   n e w   S a f e S h i r o F i l t e r F a c t o r y B e a n ( ) ;   / /           s h i r o F i l t e r F a c t o r y B e a n . s e t S e c u r i t y M a n a g e r ( s e c u r i t y M a n a g e r ) ;         S t r i n g   l o g i n U r l   =   c a s . g e t S e r v e r U r l P r e f i x ( )   +   " / l o g i n ? s e r v i c e = "   +   c a s . g e t C l i e n t H o s t U r l ( )   +   c a s . g e t C a s F i l t e r U r l P a t t e r n ( ) ;         s h i r o F i l t e r F a c t o r y B e a n . s e t L o g i n U r l ( l o g i n U r l ) ;         s h i r o F i l t e r F a c t o r y B e a n . s e t S u c c e s s U r l ( " / " ) ;         / /     u r l         s h i r o F i l t e r F a c t o r y B e a n . s e t U n a u t h o r i z e d U r l ( m a r k P r o p e r t i e s . g e t S h i r o ( ) . g e t U n a u t h o r i z e d U r l ( ) ) ;         M a p < S t r i n g ,   F i l t e r >   f i l t e r s   =   n e w   H a s h M a p < > ( ) ;         f i l t e r s . p u t ( " c a s F i l t e r " ,   c a s F i l t e r ) ;
0 x 0 3   S h i r o         f i l t e r s . p u t ( " c a s F i l t e r " ,   c a s F i l t e r ) ;         L o g o u t F i l t e r   l o g o u t F i l t e r   =   n e w   L o g o u t F i l t e r ( ) ;         l o g o u t F i l t e r . s e t R e d i r e c t U r l ( c a s . g e t S e r v e r U r l P r e f i x ( )   +   " / l o g o u t ? " ) ;         f i l t e r s . p u t ( " l o g o u t " ,   l o g o u t F i l t e r ) ;         s h i r o F i l t e r F a c t o r y B e a n . s e t F i l t e r s ( f i l t e r s ) ;         l o a d S h i r o F i l t e r C h a i n ( s h i r o F i l t e r F a c t o r y B e a n ) ;         r e t u r n   s h i r o F i l t e r F a c t o r y B e a n ; }

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则