package Ġcom . cp sc 4 7 1 . t ms . security Ċ Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . context . annotation . Configuration Ċ import Ġorg . springframework . security . authentication . dao . Dao Authentication Provider Ċ import Ġorg . springframework . security . config . annotation . web . builders . Http Security Ċ import Ġorg . springframework . security . config . annotation . web . builders . Web Security Ċ import Ġorg . springframework . security . config . annotation . web . configuration . Enable Web Security Ċ import Ġorg . springframework . security . config . annotation . web . configuration . Web Security Configurer Adapter Ċ import Ġorg . springframework . security . crypto . bcrypt . BC rypt Password Encoder Ċ import Ġorg . springframework . security . crypto . password . Password Encoder Ċ import Ġorg . springframework . security . web . util . matcher . Ant Path Request Matcher Ċ import Ġorg . springframework . security . web . util . matcher . Request Matcher Ċ Ċ /** Ċ Ġ* ĠConfig ures Ġspring Ġsecurity , Ġdoing Ġthe Ġfollowing : Ċ Ġ* Ġ Ġ* ĠB yp ass Ġsecurity Ġchecks Ġfor Ġstatic Ġresources , Ċ Ġ* Ġ Ġ* ĠRe strict Ġaccess Ġto Ġthe Ġapplication , Ġallowing Ġonly Ġlogged Ġin Ġusers , Ċ Ġ* Ġ Ġ* ĠSet Ġup Ġthe Ġlogin Ġform Ċ Ġ*/ Ċ @ Enable Web Security Ċ @ Configuration Ċ open Ġclass ĠSecurity Configuration (@ Autowired ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġuser Details Service : ĠCustom UserDetails Service ) Ġ: ĠWeb Security Configurer Adapter () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequire Ġlogin Ġto Ġaccess Ġinternal Ġpages Ġand Ġconfigure Ġlogin Ġform . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġconfigure ( http : ĠHttp Security ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNot Ġusing ĠSpring ĠCSRF Ġhere Ġto Ġbe Ġable Ġto Ġuse Ġplain ĠHTML Ġfor Ġthe Ġlogin Ġpage ĊĠĠĠĠĠĠĠ Ġhttp . csrf (). disable () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRegister Ġour ĠCustom Request Cache , Ġthat Ġsaves Ġun authorized Ġaccess Ġattempts , Ġso ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġuser Ġis Ġredirected Ġafter Ġlogin . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. request Cache (). request Cache ( Custom Request Cache ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRe strict Ġaccess Ġto Ġour Ġapplication . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and (). authorize Requests () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAllow Ġall Ġflow Ġinternal Ġrequests . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. request Matchers ( Request Matcher Ġ{ ĠSecurity Utils . is Framework Internal Request ( it ) Ġ}). permit All () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAllow Ġall Ġrequests Ġby Ġlogged Ġin Ġusers . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. any Request (). authenticated () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠConfigure Ġthe Ġlogin Ġpage . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and (). form Login (). login Page ( LOGIN _ URL ). permit All (). login Processing Url ( LOGIN _ PROCESS ING _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. failure Url ( LOGIN _ FAILURE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. success Forward Url ("/") ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠConfigure Ġlogout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and (). logout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. logout Request Matcher ( Ant Path Request Matcher ("/ logout ")). logout Success Url ("/") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. invalidate Http Session ( true ). delete Cookies (" J SESSION ID ") ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAllows Ġaccess Ġto Ġstatic Ġresources , Ġbypass ing ĠSpring Ġsecurity . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġconfigure ( web : ĠWeb Security ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġweb !!. ign oring (). ant Matchers ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠV aad in ĠFlow Ġstatic Ġresources ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ VA AD IN /** ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ sign - up ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġstandard Ġfav icon ĠURI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ favicon . ico ", ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġrobot s Ġex clusion Ġstandard ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ robots . txt ", ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġweb Ġapplication Ġmanifest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ manifest . web manifest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ sw . js ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ offline - page . html ", ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġicons Ġand Ġimages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ icons /** ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ images /** ", ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( development Ġmode ) Ġstatic Ġresources ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ frontend /** ", ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( development Ġmode ) Ġweb j ars ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ web j ars /** ", ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( development Ġmode ) ĠH 2 Ġdebugging Ġconsole ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ h 2 /** ", ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( production Ġmode ) Ġstatic Ġresources ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ frontend - es 5 /** ", Ġ"/ frontend - es 6 /** ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLOGIN _ PROCESS ING _ URL Ġ= Ġ"/ login " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLOGIN _ FAILURE _ URL Ġ= Ġ"/ login " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLOGIN _ URL Ġ= Ġ"/ login " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLOG OUT _ SUCCESS _ URL Ġ= Ġ"/ login " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġopen Ġfun Ġauthentication Provider () Ġ: ĠDao Authentication Provider { ĊĠĠĠĠĠĠĠ Ġval Ġauth Provider Ġ= ĠDao Authentication Provider () ĊĊĠĠĠĠĠĠĠ Ġauth Provider . setUser Details Service ( user Details Service ) ĊĠĠĠĠĠĠĠ Ġauth Provider . set Password Encoder ( encoder ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġauth Provider ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġopen Ġfun Ġencoder () Ġ: ĠPassword Encoder { ĊĠĠĠĠĠĠĠ Ġreturn ĠBC rypt Password Encoder ( 1 1 ) ĊĠĠĠ Ġ} Ċ Ċ }