package Ġhu . net code . s log . configuration Ċ Ċ import Ġorg . springframework . context . annotation . Configuration Ċ import Ġorg . springframework . http . HttpMethod Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . security . config . annotation . web . builders . Http Security Ċ import Ġorg . springframework . security . config . annotation . web . configuration . Web Security Configurer Adapter Ċ import Ġorg . springframework . security . web . Default Redirect Strategy Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ Ċ @ Configuration Ċ class ĠWeb Security Configuration () Ġ: ĠWeb Security Configurer Adapter () Ġ{ ĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBASE _ URL : ĠString Ġ= Ġ"/" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfigure ( http : ĠHttp Security ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġhttp ?. authorize Requests Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . ant Matchers ("/ api / auth /** "). authenticated () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . ant Matchers ( HttpMethod . DELETE ). authenticated () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . ant Matchers ( HttpMethod . GET ). permit All () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . ant Matchers ( HttpMethod . POST ). authenticated () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . ant Matchers ( HttpMethod . PUT ). authenticated () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhttp ?. csrf ()?. disable () ĊĠĠĠĠĠĠĠ Ġhttp ?. logout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . permit All () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . logout Success Handler Ġ{ Ġrequest , Ġresponse , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Json Request ( request )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . status Ġ= ĠHttpStatus . OK . value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Redirect Strategy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. send Redirect ( request , Ġresponse , ĠBASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Json Request ( request : ĠHttpServletRequest ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcheck Header ( request ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Header ( ĊĠĠĠĠĠĠĠ Ġrequest : ĠHttpServletRequest , ĊĠĠĠĠĠĠĠ Ġheader : ĠString Ġ= Ġ" Accept ", ĊĠĠĠĠĠĠĠ Ġtype : ĠString Ġ= ĠMediaType . APPLICATION _ JSON _ VALUE ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrequest . getHeader ( header ). isNull OrEmpty () Ġ&& Ġrequest . getHeader ( header ) Ġ== Ġtype ĊĠĠĠ Ġ} Ċ } Ċ