From 3f9ce85a2cc2f838bfa0e1ac1949b0eb3afa055d Mon Sep 17 00:00:00 2001 From: Tien Nguyen Truong Date: Sun, 29 Nov 2020 15:12:56 +0700 Subject: [PATCH] add references --- README.md | 24 +++++++++++++++++- pom.xml | 6 ++--- ...ntication-spring-security-architecture.png | Bin 0 -> 25362 bytes ...wt-authentication-spring-security-flow.png | Bin 0 -> 27417 bytes src/main/resources/application.properties | 13 +++------- 5 files changed, 30 insertions(+), 13 deletions(-) create mode 100644 spring-boot-jwt-authentication-spring-security-architecture.png create mode 100644 spring-boot-jwt-authentication-spring-security-flow.png diff --git a/README.md b/README.md index 7eb7010..e8977ec 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,21 @@ # Spring Boot JWT Authentication example with Spring Security & Spring Data JPA +## User Registration, User Login and Authorization process. +The diagram shows flow of how we implement User Registration, User Login and Authorization process. + +![spring-boot-jwt-authentication-spring-security-flow](spring-boot-jwt-authentication-spring-security-flow.png) + +## Spring Boot Server Architecture with Spring Security +You can have an overview of our Spring Boot Server with the diagram below: + +![spring-boot-jwt-authentication-spring-security-architecture](spring-boot-jwt-authentication-spring-security-architecture.png) + For more detail, please visit: > [Secure Spring Boot App with Spring Security & JWT Authentication](https://bezkoder.com/spring-boot-jwt-authentication/) > [For MongoDB](https://bezkoder.com/spring-boot-jwt-auth-mongodb/) -# Fullstack +## Fullstack Authentication > [Spring Boot + Vue.js JWT Authentication](https://bezkoder.com/spring-boot-vue-js-authentication-jwt-spring-security/) @@ -15,6 +25,18 @@ For more detail, please visit: > [Spring Boot + React JWT Authentication](https://bezkoder.com/spring-boot-react-jwt-auth/) +## Fullstack CRUD App + +> [Vue.js + Spring Boot + MySQL/PostgreSQL example](https://bezkoder.com/spring-boot-vue-js-crud-example/) + +> [Angular + Spring Boot + MySQL example](https://bezkoder.com/angular-10-spring-boot-crud/) + +> [Angular + Spring Boot + PostgreSQL example](https://bezkoder.com/angular-10-spring-boot-postgresql/) + +> [React + Spring Boot + MySQL example](https://bezkoder.com/react-spring-boot-crud/) + +> [React + Spring Boot + PostgreSQL example](https://bezkoder.com/spring-boot-react-postgresql/) + Run both Back-end & Front-end in one place: > [Integrate Angular with Spring Boot Rest API](https://bezkoder.com/integrate-angular-spring-boot/) diff --git a/pom.xml b/pom.xml index 048d6d3..907ac6a 100644 --- a/pom.xml +++ b/pom.xml @@ -36,8 +36,8 @@ - org.postgresql - postgresql + mysql + mysql-connector-java runtime @@ -52,7 +52,7 @@ spring-boot-starter-test test - + org.springframework.security spring-security-test diff --git a/spring-boot-jwt-authentication-spring-security-architecture.png b/spring-boot-jwt-authentication-spring-security-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..b238cb3b050b101bf27bb95f69daffd9a813b9c2 GIT binary patch literal 25362 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ˈwD(K?DG&&m?tG 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
    u(zQn$2zt7lqDsZ%0vp+xu#Li z3Oa4>nMxmtZcVJY)wuct`^Do6AEL*bsCR7(vMyg!>)bemU1gq$* z#@3`QE>2jYX1uj-vyN*uwfn%91G>FF9pQHEe&FlV_^l>I8Wl%e5lia+hp}vXsJ3+nWiXm)_ zS$<|AzGDWGw`%;{DF}J%PYg_BmzH|O&(1oh4@-Ad+>zM!2*KqV+eP3uCD{ZlsBxJ= z^Ww?D8BV9&nkhkBedgJ7z6rqxvt@&zJVNqo6KfZvl*s23bx@5+VOI|YJ&JLMRxURg zQu_LNABI5U!`ch%r)y%FhC(KJKX=xp%-ykc_qTD@35wxlhGHx_-`_KUY24n}O%(y_ zG_D=})T8X=BfQ*g0EoI+P8vRRFn|rMLeJcfSmeh!Pp4vN zSr!yrwaoL=M?|7TJhxQUbeH@?wxKUT7h}Hq$Wqg>2G8D(Mkg}LzF=c>^iM42n!2Bc z^GgT%p!j9zy|AqtE|be$<*6$DlxntREw$S>@N^7<+&}D6q@g7X-m;uCamjM-^^>Nc zv{pqs=y`GxCbFj{Q~5FKjeNwuQ8$5%w7AOg-qAe+XDCG)!QKIot6te^Z zN%}!jIG7Y>AQS!?oW$L0j~Kd~LoRrz+;H-ph`>Qs4uuO~d#R`{7w+@nKT_3@6bv^x zwZH2mI_i%!u>;9Rq}>e(Bq>3dS#v;*KSp2MF!}e}mq*&aqcXkx4EOF$=WX^nK4eQV zu?M{#xp|FEV3?WM?3!9-uxa8W#Krar9-vlzR4OOx;9T%2t&j^SJA=V*tvM4YlvOy@ zQ({Y84pnE=L@Fa)Af=#OPrEgX;4sAaOG?cb{>BAR!)%Nt2Q=T699*fD#kB#$oDzRL zPduDkG$8>n2#AvwF!)%0)ww}Qtw{Y8w;73(jEFq=rW;r%3d29B6MbxLj5V?Lx0~-x zcE^K$!qAh0sq_^1_E#Iqi2AjbgUz*y&?CokbR=XVEAERrQ0hPnm^kk0PE8zG@dsEV zCIgm)FRK~S%_o@JS41V;m>@JMKcN$@2bF|6FK>S`T6u1JiC*Lq`mB`!w)^#Ti)7vC z$an<@&Li1NIrLrJ09dbmDaL(J5|TuriD1SOwXFN{;^$}+(fX5CX*{gbrst{%KgfIy zfeop=PS=MHwRp~&1u3Pl?V|0K!4@M z$7lWm67ERR5@>(G7M-Euhr3R~cM`!X9j7q=ph9X>c=nH{AEwmIu`_X=%%(q_lBqOq z0Zw%-(P#g74LF8z2!DNwh%jAv10As|?pbbs?VC^w2CG8&P5E9Y`j;%`IL` z0!izg@Y?;WZEn^0t&!(dqo4Gec%b(ZqNDh&V{JX2Dw>;G~ec82*H`t*r_@(nao($PpF`2Xo9Nmu#j hVgHw#?|-hJoU25eUB1vVXGJ=&hKi1Ixzhco{|}$I3Ss~N literal 0 HcmV?d00001 diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index eea124f..d02fe7a 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,13 +1,8 @@ -## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties) -spring.datasource.url= jdbc:postgresql://localhost:5432/testdb -spring.datasource.username= postgres -spring.datasource.password= 123 +spring.datasource.url= jdbc:mysql://localhost:3306/testdb?useSSL=false +spring.datasource.username= root +spring.datasource.password= 123456 -spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation= true -# The SQL dialect makes Hibernate generate better SQL for the chosen database -spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.PostgreSQLDialect - -# Hibernate ddl auto (create, create-drop, validate, update) +spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.hibernate.ddl-auto= update # App Properties