package Ġcom . hy os ak ura . gateway . filter Ċ Ċ import Ġcom . google . gson . JsonObject Ċ import Ġorg . springframework . cloud . gateway . filter . Gateway FilterChain Ċ import Ġorg . springframework . cloud . gateway . filter . Global Filter Ċ import Ġorg . springframework . core . Ordered Ċ import Ġorg . springframework . http . server . reactive . Server HttpResponse Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġorg . springframework . util . Ant Path Matcher Ċ import Ġorg . springframework . web . server . Server Web Exchange Ċ import Ġreactor . core . publisher . Mono Ċ Ċ /** Ċ Ġ* Ġ åħ¨å±Ģ Filter ï¼Į ç»Łä¸Ģ å¤ĦçĲĨ ä¼ļ åĳĺ çĻ»å½ķ ä¸İ å¤ĸéĥ¨ ä¸į åħģè®¸ è®¿éĹ® çļĦ æľįåĬ¡ Ċ Ġ*/ Ċ @ Component Ċ class ĠAuth Global Filter Ġ: ĠGlobal Filter , ĠOrdered Ġ{ ĊĠĠĠ Ġprivate Ġval Ġant Path Matcher Ġ= ĠAnt Path Matcher () ĊĠĠĠ Ġoverride Ġfun Ġfilter ( exchange : ĠServer Web Exchange , Ġchain : ĠGateway FilterChain ): ĠMono < Void > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġexchange . request ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġrequest . uri . path ĊĠĠĠĠĠĠĠ Ġ// è° · ç² Ĵ åŃ¦ éĻ¢ api æİ¥åı£ ï¼Į æł¡éªĮ çĶ¨æĪ· å¿ħé¡» çĻ»å½ķ ĊĠĠĠĠĠĠĠ Ġif Ġ( ant Path Matcher . match ("/ api /** / auth /** ", Ġpath )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken List Ġ= Ġrequest . headers [" token "] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( null Ġ== Ġtoken List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġexchange . response ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBoolean Ġis Check Ġ= ĠJwt Utils . check Token ( token List . get ( 0 )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif (! is Check ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġexchange . response ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// åĨħéĥ¨ æľįåĬ¡ æİ¥åı£ ï¼Į ä¸į åħģè®¸ å¤ĸéĥ¨ è®¿éĹ® ĊĠĠĠĠĠĠĠ Ġif Ġ( ant Path Matcher . match (" /** / inner /** ", Ġpath )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġexchange . response ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġout ( response ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġchain . filter ( exchange ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Order (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġout ( response : ĠServer HttpResponse ): ĠMono < Void > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠJsonObject () ĊĠĠĠĠĠĠĠ Ġmessage . addProperty (" success ", Ġfalse ) ĊĠĠĠĠĠĠĠ Ġmessage . addProperty (" code ", Ġ 2 8 0 0 4 ) ĊĠĠĠĠĠĠĠ Ġmessage . addProperty (" data ", Ġ" é ī ´ æĿĥ å¤±è´¥ ") ĊĠĠĠĠĠĠĠ Ġval Ġbits : ĠByteArray Ġ= Ġmessage . toString (). toByteArray ( Charsets . UTF _ 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= Ġresponse . buffer Factory (). wrap ( bits ) ĊĠĠĠĠĠĠĠ Ġ// response . set StatusCode ( HttpStatus . UN AUTHORIZ ED ); ĊĠĠĠĠĠĠĠ Ġ// æĮĩå®ļ ç¼ĸçłģ ï¼Į åĲ¦åĪĻ åľ¨ æµıè§ĪåĻ¨ ä¸Ń ä¼ļ ä¸Ńæĸĩ ä¹± çłģ ĊĠĠĠĠĠĠĠ Ġresponse . headers . add (" Content - Type ", Ġ" application / json ; charset = UTF - 8 ") ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse . write With ( Mono . just ( buffer )) ĊĠĠĠ Ġ} Ċ }