package Ġcom . fp w ag . admin . infrastructure . security Ċ Ċ import Ġcom . fp w ag . admin . infrastructure . config . Fp Admin Properties Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . security . core . context . SecurityContext Holder Ċ import Ġorg . springframework . security . web . util . matcher . Ant Path Request Matcher Ċ import Ġorg . springframework . web . filter . Once Per Request Filter Ċ import Ġjavax . servlet . FilterChain Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ import Ġjavax . servlet . http . HttpServletResponse Ċ Ċ /** Ċ Ġ* Ġ èĩªå®ļä¹ī é ī ´ æĿĥ è¿ĩæ»¤ åĻ¨ Ċ Ġ* Ġhttps :// blog . cs dn . net / ech 1 3 an / article / details / 8 0 7 7 9 9 7 3 Ċ Ġ* Ċ Ġ* Ġ@ author ĠFlow ers Pl ants Ċ Ġ* Ġ@ since Ġv 1 Ċ Ġ*/ Ċ class ĠSecurity Authorization Filter ( private Ġvar Ġproperties : ĠF p Admin Properties ) Ġ: ĠOnce Per Request Filter () Ġ{ ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtoken Provider : ĠToken Provider ĊĊĠĠĠ Ġprivate Ġvar Ġjwt Ġ= Ġthis . properties . jwt ĊĊĠĠĠ Ġoverride Ġfun Ġdo Filter Internal ( request : ĠHttpServletRequest , Ġresponse : ĠHttpServletResponse , Ġchain : ĠFilter Chain ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . properties . ignore Urls . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ant Path Request Matcher ( it ). matcher ( request ). is Match ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchain . do Filter ( request , Ġresponse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ// Ġ å¿½ çķ¥ çļĦ url çĽ´æİ¥ è·³ è¿ĩ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġthis . resolve Token ( request ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! token . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSecurity Context Holder . getContext (). authentication Ġ= Ġthis . token Provider . parse Token ( token ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġchain . do Filter ( request , Ġresponse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġresolve Token ( request : ĠHttpServletRequest ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbe arer Token Ġ= Ġrequest . getHeader ( this . jwt . authorize Name ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! bearer Token . isNull Or Blank () Ġ&& Ġbe arer Token . startsWith ( this . jwt . token Prefix )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbe arer Token . substring ( this . jwt . token Prefix . length ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" éĿŀ æ³ķ Token ï¼ļ $ bearer Token ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ } Ċ