From a370216def66533787e9d81a7a690ae0348ac115 Mon Sep 17 00:00:00 2001 From: liuxinfeng <624310862@qq.com> Date: Sun, 2 Oct 2022 18:42:41 +0800 Subject: [PATCH 01/25] =?UTF-8?q?=E4=BF=AE=E6=94=B9pom=E6=96=87=E4=BB=B6?= =?UTF-8?q?=20=202.5.6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- security-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/security-java/pom.xml b/security-java/pom.xml index 8385dfb..b814675 100644 --- a/security-java/pom.xml +++ b/security-java/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 2.5.5-SNAPSHOT + 2.5.6 com.example -- Gitee From 2b6a3303d3fa275c34947943c8a959363bc39a09 Mon Sep 17 00:00:00 2001 From: liuxinfeng <624310862@qq.com> Date: Sun, 2 Oct 2022 18:52:21 +0800 Subject: [PATCH 02/25] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E4=BB=8E=E5=86=85=E5=AD=98=E4=B8=AD=E8=8E=B7=E5=8F=96=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BF=A1=E6=81=AF=EF=BC=8C=E5=87=8F=E5=B0=91=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E5=A4=8D=E6=9D=82=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/serviceImpl/AdminServiceImpl.java | 55 +++++++++++++++++- .../serviceImpl/AdminServiceImpl.class | Bin 3583 -> 4921 bytes 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java b/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java index 63333b2..667002b 100644 --- a/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java +++ b/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java @@ -13,6 +13,7 @@ import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -26,8 +27,8 @@ public class AdminServiceImpl implements AdminService, UserDetailsService { private AdminMapper adminMapper; //连接数据库获取账号密码权限方法 - @Override - public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + //@Override + public UserDetails loadUserByUsername1(String username) throws UsernameNotFoundException { // 从数据库中查询出用户实体对象 Admin admin = adminMapper.selectNameUser(username);//根据用户名查询数据库用户信息 // 若没查询到一定要抛出该异常,这样才能被Spring Security的错误处理器处理 @@ -82,4 +83,54 @@ public class AdminServiceImpl implements AdminService, UserDetailsService { public int addUser(Admin admin) { return adminMapper.addUser(admin); } + + + + @Override + public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException { + + String password=getPwdFromDB(userName); + BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); + password = bCryptPasswordEncoder.encode(password); + + Collection authList = getAuthorities(userName); + org.springframework.security.core.userdetails.User securityUser = + new org.springframework.security.core.userdetails.User + ( + userName, + password, + true, + true, + true, + true, + authList + ); + + return securityUser; + } + private String getPwdFromDB(String userName){ + + if(userName.equals("admin")) { + return "admin"; + } + else { + return "guest"; + } + } + /** + * 获取用户的角色权限,为了降低实验的难度,这里去掉了根据用户名获取角色的步骤 + * * @param + * * @return + * */ + private Collection getAuthorities(String userName){ + List authList = new ArrayList(); + if(userName.equals("admin")){ + authList.add(new SimpleGrantedAuthority("ROLE_USER")); + authList.add(new SimpleGrantedAuthority("ROLE_ADMIN")); + } + else{ + authList.add(new SimpleGrantedAuthority("ROLE_USER")); + } + return authList; + } } diff --git a/security-java/target/classes/com/securityjava/service/serviceImpl/AdminServiceImpl.class b/security-java/target/classes/com/securityjava/service/serviceImpl/AdminServiceImpl.class index 776906624ab5d5f6930e3ebbf68e4b9511194c48..bcc0378967074e9e22475c3fce9e7d1f0dba0a7d 100644 GIT binary patch literal 4921 zcmbVQ`+F2u8Gg@ZliBPJ1h#-I6w9rU8(pc?)`S8HB#@c}WPuuNZ6~`!7})HD*;yc3 zORFt{_tt8qR&CWvt5%?5Vj89WtW-*0C2lD!z7<{@X!U19 z6aN13`?mn>z=u(6!`W7J<6I2qF|FaN5qvF*FrJCx>v%TGl?xi4i=q{0H9Q~1H}K6U zVt6Ko7x1DCJ(-Il{Vffb7?b8X+c}*aH;r6AdBRA$wlkeHN*j`W1=l`jIcA1xTXtGG z%iX2W)ZTGSA-vblmh}44+6fs2386--LPR!+U4>@vTol&ThBIZKvVH%lEbQ2V$h{53 z4s(@KF{9v~w0WkMNr+bYwhOM6P42a`Su-t1N3qtT*tEj33ZY>u?{az7LfEILiqH>N z$d(oEybF}}J4VhmGfV={z3JXvw6nQFotWO~k1J0=#FnI7BYm2w>m`7OUu*b{hPO2Q zR>M_==)n23ITa-3vJsOOGKUOFNY`|TLNsqmJR6H`~GR9^V$rwD&{zXzxHrdJXw0x8O^>py~BT@|lv;xudDbYt_$0F+M z)jt*L6Q+CUTxQU*C-?O$Y^jT99a>n*eZ>m#3b?cJ&f20LtV)|tT$WGYwbf5-BAT)b zPTCx_q+(WjDUm93^aFy8LVJDmS=FZPl9ZCcmR_Cr^+P&7gY6pL*6}pBd4Ijjsd&2e znOjnL)OH8$LM~I{6uNi&y*F>ae);z0TmQUt{omK#`qwLO-@Y^}Hs2u^>G&Ofuj6ri ziM3m<+djuJrv04iU)+-t9Vb&3FDO$)-AHFiT3+@fXbLcpvk;9jen*M+!%Dd<9SGNF$?T5;=uE z|KEwl%TUK(@i*~iO1!zH;{#mdTd>S$`rq1RBnZ+~VQr16GM6f>slV#qE-T6@R=$AA;pJ&R z>Eh*yAr_3m*Oj{p^9Bns3F7Aa*Yqwhh3-n%_MSAHlzFDWMUzj@>dK>) zzDn`njan;roIj1DX`uxpo9AB;-TVtDga?oW->Sl%{65G(ep>kbEWa^+Nvv!?$B{@W zew#aIp>D7f!ozGu7+8%**y_FjK93%b6ne1}O|n_Ngl0rIceC>*LS1uc3Sp%CBP^Lm zcr4yLiMyJw)yATm0S*0EVcd%}tEJYr+pW}wev$sCr3@OURjZ8KQb)0}Aj2~A12o7mfo1h!x!wxSE|*o6)pKqp2xN)g%#0(+65zDihMBdl)_Qo-l| zG|n%_quikhA^}>`+s!#Xs(Yl-&*_}G&z;|#Y zXB(9>o5Nbg`)1*(_f(vEG>GGNPx$pELJaW@c%ekIG60~n#KB& zd2C>XZXDglYTGm-bDMiutMRd}?l6B6;aS`-6)G_`d4;pa+x`UGC$W?OuOJv}2}d_y z4^kAneD$SsPvV3ZXAARmg1r!TZNN!b)VG$qPkE)#&CzL=gI@|lKK`1NLQQs`pqY?7 zRsyUf%O%;`y5d`Au=NUB;#;oA+si&LrFP&9Lw87Qg$mr-N`AHleoDDDLFvUr^^Nf{ z!&ynBIeH}81_N>%DH`3X@!2bYAW%uX+ delta 1262 zcma)5Yg0{87=G67vQGP~bfi*KOp0`&NbW=zI?;`kTj8YRRF0yKOKwLlA(v=J^oftm znCVQ-m@?xB_~w)UVw!l?E|qCAKJ4dRmv=qy^IrCN#;@eyx2cJ*017Z{Vig*qkcvhp zPT{n~83#Nj!qH^nESgQ;cqPu6h(d#e&qNDaO*qlyL>tcQt?lF2-WMd=we8SwQNtw@ zvFLQ73jrrC5*gQYux<@r4So&RHQbQ6DRE2UwnQ-WBU&WH`a3+$bzR=h;%<%Y zo(o=qYO6moe$-_Qis(BMJrZ{%?n&Gq4TXIXmQU6!%S4vKYOIlXpl}3r0%cYxVx^U9 z#95Ov&y|T@i8~4p@krqyDy*H3#>5_l$LJ%Q!V^4Is78&#Gd#CO99zr#(Wmf2!%GY( zWWr)hg+aVxV1?HhQh0;60o57|<(ypa-&@xM6Hg|cn zf;J-iGen3B135(P3@pbwqMCNVdgO8^_+$gZ^keZ75u^jgvd3WLj3dlyi4Fzz`$EJJ zQ`zt|uF{c28EKS}LkWcp@1}rCa@6v~N9JC#4v}{l8}SbLc3d|k&zJHfpDRY0QJ`0w zcqYjHfwQ>TPImxXu$8)Ug6zdMZ09Jt;l~c_q{v--o?xe@?{?4L74mKm?^Ymu5=jz! zr%)+TBvC9;G6{!7=}#)%N0)HM3&(!0A_T+hLa;mJ)Kx6tP8ZB%A%ey@k_AS%onOoC z^J;0%WKwSX9N<$<(hSueT7&0KUDM=oq!-O29Jler>|b&c_ziJUq?G^w -- Gitee From 92e2d8a807a5e71478288f5e2ce3983620785f7e Mon Sep 17 00:00:00 2001 From: liuxinfeng <624310862@qq.com> Date: Sun, 2 Oct 2022 19:00:39 +0800 Subject: [PATCH 03/25] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=EF=BC=8C=20=20authentication=20=3D=20authent?= =?UTF-8?q?icationManager=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20.authenticate(new=20UsernamePasswordAut?= =?UTF-8?q?henticationToken(username,=20password));?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../securityjava/security/LoginService.java | 52 +++++++++++++------ 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/security-java/src/main/java/com/securityjava/security/LoginService.java b/security-java/src/main/java/com/securityjava/security/LoginService.java index 74962b7..27bcfb9 100644 --- a/security-java/src/main/java/com/securityjava/security/LoginService.java +++ b/security-java/src/main/java/com/securityjava/security/LoginService.java @@ -5,11 +5,15 @@ import com.securityjava.pojo.Admin; import com.securityjava.service.serviceImpl.AdminServiceImpl; import com.securityjava.util.JwtTokenUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -31,25 +35,41 @@ public class LoginService { PasswordEncoder passwordEncoder; + @Resource + private AuthenticationManager authenticationManager; + public Map login(String username, String password) {//拿到Controller层传入的账号密码 Map map = null; + // 用户验证 + Authentication authentication = null; + // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername + authentication = authenticationManager + .authenticate(new UsernamePasswordAuthenticationToken(username, password)); + // UserDetails loginUser = authentication.getPrincipal(); + //密码正确 + map = jwtTokenUtils.getToken(username);//生成携带用户名的Token + map.put("code", 200); + map.put("msg", "登录成功"); + map.put("username", username);//返回给前端用户名方便前端渲染 + return map;//返回给前端一个含有Token的map集合 + //将账号传入到连接数据库获取账号密码权限业务逻辑类AdminServiceImpl进行校验 //如果存在与用户名相对于的用户信息则返回一个user类,回到LoginService类进行密码的校验 //如果不存在与用户名相对于的用户信息则抛出一个异常,进行MyError类的认证失败处理返回给前端该用户不存在 - UserDetails user = adminService.loadUserByUsername(username); - if (!passwordEncoder.matches(/*原始密码*/password,/*加密过的密码*/user.getPassword())) { - //进行密码的校验,校验失败返回前端密码错误 - map = new HashMap(); - map.put("code", 303); - map.put("msg", "密码错误"); - return map; - } else { - //密码正确 - map = jwtTokenUtils.getToken(username);//生成携带用户名的Token - map.put("code", 200); - map.put("msg", "登录成功"); - map.put("username", username);//返回给前端用户名方便前端渲染 - return map;//返回给前端一个含有Token的map集合 - } +// UserDetails user = adminService.loadUserByUsername(username); +// if (!passwordEncoder.matches(/*原始密码*/password,/*加密过的密码*/user.getPassword())) { +// //进行密码的校验,校验失败返回前端密码错误 +// map = new HashMap(); +// map.put("code", 303); +// map.put("msg", "密码错误"); +// return map; +// } else { +// //密码正确 +// map = jwtTokenUtils.getToken(username);//生成携带用户名的Token +// map.put("code", 200); +// map.put("msg", "登录成功"); +// map.put("username", username);//返回给前端用户名方便前端渲染 +// return map;//返回给前端一个含有Token的map集合 +// } } -} \ No newline at end of file +} -- Gitee From 63d5467255bd760bc2cf94a3ab0ef9b81d1d7308 Mon Sep 17 00:00:00 2001 From: liuxinfeng <624310862@qq.com> Date: Sun, 2 Oct 2022 19:14:47 +0800 Subject: [PATCH 04/25] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=EF=BC=8C=E5=9F=BA=E4=BA=8E=E5=86=85=E5=AD=98?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E5=AF=86=E7=A0=81=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/LoginController.java | 2 +- .../securityjava/security/LoginService.java | 32 +++++++++++------- .../service/serviceImpl/AdminServiceImpl.java | 9 +++-- .../controller/LoginController.class | Bin 3395 -> 3443 bytes .../securityjava/security/LoginService.class | Bin 2051 -> 2708 bytes .../serviceImpl/AdminServiceImpl.class | Bin 4921 -> 5140 bytes 6 files changed, 28 insertions(+), 15 deletions(-) diff --git a/security-java/src/main/java/com/securityjava/controller/LoginController.java b/security-java/src/main/java/com/securityjava/controller/LoginController.java index 5f421d7..f5ca87b 100644 --- a/security-java/src/main/java/com/securityjava/controller/LoginController.java +++ b/security-java/src/main/java/com/securityjava/controller/LoginController.java @@ -31,7 +31,7 @@ public class LoginController { * 登录接口 */ @PostMapping("/login") - public Map login(@RequestBody Admin admin) { + public Map login(@RequestBody Admin admin) throws Exception { //获取前端传过来的账号密码,将账号密码传入到登录逻辑处理类LoginService进行逻辑处理 return loginService.login(admin.getUsername(), admin.getPassword()); } diff --git a/security-java/src/main/java/com/securityjava/security/LoginService.java b/security-java/src/main/java/com/securityjava/security/LoginService.java index 27bcfb9..c7c8dab 100644 --- a/security-java/src/main/java/com/securityjava/security/LoginService.java +++ b/security-java/src/main/java/com/securityjava/security/LoginService.java @@ -38,20 +38,28 @@ public class LoginService { @Resource private AuthenticationManager authenticationManager; - public Map login(String username, String password) {//拿到Controller层传入的账号密码 + public Map login(String username, String password) throws Exception {//拿到Controller层传入的账号密码 Map map = null; // 用户验证 - Authentication authentication = null; - // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername - authentication = authenticationManager - .authenticate(new UsernamePasswordAuthenticationToken(username, password)); - // UserDetails loginUser = authentication.getPrincipal(); - //密码正确 - map = jwtTokenUtils.getToken(username);//生成携带用户名的Token - map.put("code", 200); - map.put("msg", "登录成功"); - map.put("username", username);//返回给前端用户名方便前端渲染 - return map;//返回给前端一个含有Token的map集合 + try { + Authentication authentication = authenticationManager + .authenticate(new UsernamePasswordAuthenticationToken(username, password)); + UserDetails loginUser = (UserDetails) authentication.getPrincipal(); + if (loginUser != null) { + //密码正确 + map = jwtTokenUtils.getToken(username);//生成携带用户名的Token + map.put("code", 200); + map.put("msg", "登录成功"); + map.put("username", username);//返回给前端用户名方便前端渲染 + return map;//返回给前端一个含有Token的map集合 + } else { + throw new Exception("登录异常"); + } + }catch (Exception ex) + { + throw new Exception("登录异常"+ex.getMessage()); + } + //将账号传入到连接数据库获取账号密码权限业务逻辑类AdminServiceImpl进行校验 //如果存在与用户名相对于的用户信息则返回一个user类,回到LoginService类进行密码的校验 diff --git a/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java b/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java index 667002b..df2e909 100644 --- a/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java +++ b/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java @@ -108,14 +108,19 @@ public class AdminServiceImpl implements AdminService, UserDetailsService { return securityUser; } - private String getPwdFromDB(String userName){ + private String getPwdFromDB(String userName) throws UsernameNotFoundException { if(userName.equals("admin")) { return "admin"; } - else { + else if(userName.equals("guest")) { return "guest"; } + else { + // log.info("登录用户:{} 不存在.", username); + throw new UsernameNotFoundException("登录用户:" + userName + " 不存在"); + } + } /** * 获取用户的角色权限,为了降低实验的难度,这里去掉了根据用户名获取角色的步骤 diff --git a/security-java/target/classes/com/securityjava/controller/LoginController.class b/security-java/target/classes/com/securityjava/controller/LoginController.class index 3a12efac781d8be0a86d6d83bf11cef95fc6e15b..064fb2022b739bd109314343fba21588d69cd698 100644 GIT binary patch delta 650 zcmaKo%Tg0T6o$VZh}}%OuvDzls5=xDB_If*lBkG+H&g^KC^CkKK?s*%!0QOFFr^FM zg38W?8+UG8`V#JRtE$8xci-p-@NwZLy_ZpQNue`76_V$&?S{BJ_o>>l2wxrmj zS+XqiJo=v4zw?FVC9f>6d1DD(c*{!Vz?SW*VaHTZ4${*>aWcJ8q0*_xJe7#v)eUyl zqG%y4&rc|tW!WpUUd&dRZKJ3X$7mN%D=|7mD2~$^ZSy~bT^yl?QzSV-H?_hBXyTx( zPBjaar_#eoQJ&<%R=jn3HK%2$Ut<2ZaL>PmGi2pVqg-@Uu8s~T+f!#mw3Rr^IVY<9 z_KG@BHd;z%{^GtEz99Ib;IEswKZXYcUlQD8H%?!U;VXi#3Jy2%wHO{0d|mK2n`!ye Y+Km{#DeVtQ`yRKdAMJ}8mi-9)26aJWrvLx| delta 614 zcmZ{gO;1xn6o#L8ai%scNh=ggVekA067ejI%H1~gOfInR>_=NR@ejJWXB z=NY5U8}k|GxhCW6(y13wUNYgfuUwdP2c`^J!?a<>@Y;|wyfM5r%o^r2^O^;PotT=- z%@1XlmUEL?wO9D5il4k{r832xvUaa(k)-7vNzIbw5_wCExaPg(1Ivnda3&J3v{Z3H zvtn6g&9cshWz&U^Y!zEho>j$+9`{sv@HLW7oKV!s3oB)wLQyZXVGNb0kt^b9CB{_| ziYA(aE`PgljmwnLL6jC+DHqmHEf-~Vs!pgpgCuRDJle%Qjdwtg=DG~^OU#6r|Gl{5 z--|n?m`9D|B&2jO8f}WDL^R~N!A&Ph{dS4!CK>ETQ%ATbgl`G%6?}M%Z-?+5!F_^9 w?BDGE5WXw;p5V{Ncp!xD3w|J2SETCyw3ZIxhtmF_wD0k#^wGYkA=y8M-=Q5=aR2}S diff --git a/security-java/target/classes/com/securityjava/security/LoginService.class b/security-java/target/classes/com/securityjava/security/LoginService.class index a38574a4259e6230b7fda6bd6a1bb42e10d8a21a..81bbc3042a483fe64bc1a28abbd7a723085244f0 100644 GIT binary patch literal 2708 zcmb7GSyLNF5dKCItPqO<`3iAPpB%>P5TD?XV2opkIBX0KIlWp9VnNzfRx6IDl=GCz zQ(p3rr~HMaDg}1P^^{8Ge~|nOC*Q1uSRt7tRjQfUneLwM@9S>OA5VYy8Nem1C(wnl z7CeXB8s1JIiaV_s$3!dMK}y4f@AdX8K-i>1+feyT< z;r#>-V@wSnsGSeh>LU#wYj`Now!G%wcUPn{=i9lWz?qcg=8dAXN}la+ESsyQQR0a) z5f&Q~=(<;Od^<1a?V_E|$q~nKebcvHhc>RITrX=B3!d#{7d%A$K&*)+xGoCNxjFFI%+MuEKf>|u` z-prU|xf$sR3^(*@H&Vm$HVVFL?5Y_vwfZ!9)GYZ+l2Kbhpp&L!W|iU5gALbesc7qs z(E5p#0((6S%sp9jOP(cp+I+)yY=2lF+TAlR5F2Go3^HXqa;lV1OYgo(76g(h*D`bS zre~|~%4W=8vPnyKBQVQ68!0zig`L+m<$fP!!%X!1sNX>m*=}VLG<%xLBYOP7v*@{W_{CI;W|KEgQ+3SG7XB%VlfINsyC8} zj!Ee+xtSSL6^Ac9ZY5>|s&Cth#m+Dt7u00}y^R5&wsifCf;2|me8F{?pF=v%;H-|5 zI3+OMs1&P7UrSQ}ngU`s_iJ-CXcNkIMuXI`h%BSju>@P-`hnL3^ge?f9na&0hGiWq z$T723wQ9)gaNrV19R+-%fG=j*9sc@yd*`RG{`~yQoiDx-IJ`$z72T@P&X1q%JbtX) zW%eB3lPqWP&61sCSI|*}ucL%j9cx$>I9u2Ks#t|NA%%Mur_;;Q@>MIXc1vc0z{P*Z zq!!>Bt7Sh0&V@^`d{wvvD?6$wj2w91KB{YPuJ$rLB*sKs>~5TOmA?n0QQh|Ze-)CJ zmHrIdi)9x~X2Fr}N>2$Yu@a-esXBJ*|C?B^v=!tk6~f?E`d59o>fGaU-0@}5)U{PJ zSCZ3<0>`??!_HJB*f*ku5?Q|%zT(;Zgc?gVoTFjYUGGR_vsoxeCnM0`NFZdXCYR|^ zf{{* z-swP>4+)&*?m2!LoCW8m-Ytmlg5z$E>LT#s9*%lh0KMqrm%w@S^UXtLaTiUL1Rja0 z-tQ6FMs%U?{1#$Q&=kR7tc#0gfnT8wHgz@qh5-u2`!>-s)t^js;`hgBeF8m-2mQ&m zunrf*us%y=O&JJ#Wrz_^Cpff0U{E?93JusHP2Da zQK&$!pp9cMPy5l13pmDzPvRooAK>^p-sFRB0+;zfyF$%t)Eq<_H-fvG`Hr?^U+QC#QlX+)l4Uc;bx0{#KJDg}7} delta 861 zcmZ8f%T7~K6kYq?mUG)4l(rxbUx@OMQp;21B?_o0P*6YwNzAp}6t#eGTZ~T7m>A>8 z^_MkzUiDW+H+sHaEpoBNC&y&Xf{kxIxfo z>^MPgq@QiQee!d8%sp2XhNks?R8B&8Mu{nAN6!i6Bj=lz5~{#pn`_@nVDgI65>(F9-)X%VA&0 zUURmz=M2uW_MB;)^HSL!VN`@Yv3FOmfmX9LN7*{0VER(Fa=XCkU&blnI8JakMw7-` z+yA!@+ z+&*U5pDn`I|BCW5SlR~oL%a3dSBE3Eo+W}+X{h9=ibYqm4WSt|=t3AhsO6tihe@uC zqXF~$y-OLE}jDAsK^d$GgAfgXs0FqbA)vR6l0e0j&@7}vGD@Ob5MsPSuq^793QA~} zgC%C~hiIt~#O0yb!(R6KCqjSh_ZG|5w`VRF%H>-AFngcJKHvHFKHr|vjGoNU#VcbI z0CMq%g*(t5hh=!#hgT3X@T!T|EO@ZX!fx!bxYJ>v(?T5D4eYhB4_y{~*yY3P=$5Gy zvtObQ783syJO zHI@XMn`>IMflCv5{AmMc4D=fqF!0sjK#bQjFCPU8cVW4KL4{{ft6`lz5PP$|RG)88 z8G*!n3>i4B@HK`ND)EF}U{)rbQ3zv%ND8AEQwZWIg>js<`_1JW&tXJiLQEUZE9B!F z-ly;_zT>3|-{XS95BO0-;ASQq{P)?T z3cunv4OZG;BL^l=9hp4Vr|>&Q27BVlW0VH3l&i5?!xH{>040dUMxI{CD0iv^WagAVl`eby!nO%m85eyll-i#A?Tw>(a_J??9B6LWo|_hdEANF!jqI+1gVf- zM=7f+P${EG)vv-Tbg(2LDZX1p8CBs)VnrxcaZ?k$N@?wr38_Uh&ro!|04~F)2}G$1 zL)%JB4b1>;xLzPlI!*w{%1tqnVfH9uuFkOZ8n|2K*%wTwxYbFK{o^njOH5rc!)((v z5JWD~8WlSL&${xn{c~44sU=gaz!us{%;Ce#XIWEN$s9B|psSqyK(z1y>P*z=rBWI= z(s?Q!jc8)!Q+T@BQDY8g&!HuvMri?ePt+LIS7 z7hZoxf3`m}GS2KDho@p3iz~v&@@EetM?U`&nqe#r!+V}*W1L1@NCqI2IC4?MU%($t z5_Y=flBeM%(bV!HsY#QNfbz{y{V!Agtc0mu=D#Hr2qS(Jx9QlNGY(&c|MuwoIOe%a zvqGd%JPtFr?z>@P54*mDHSA<#b+Mw|4!bno0QUQ|;EN;VOzt+b&vmEIl{|&J^gNe@ dc^vd937FL+l_L`8_L)BvJib;jS|PhkAYbQsq@&qyp<)6A`w zo4DEVo#hF7{eR2`**s!6X!)KWENfWncg1_^4_SWXs9d-F#4*dGtg{@a;4t6sOk6u2 zpV?{onWL5oHP13>rHsEwFv|(1B%&P z$1P8?!SW1){))uXy3_ooXwNCy8O!e+bExVY*|>Fh;%s7dBrlc7%2T<_BZniSWFzBz zdBvEFx5${3Q4$qoste8nzgWE_uQxj|j8V&7ES8!0l`wSHB72UIIYKLUOVsNb=N^^_aua)L zW2uO%g8|xECQ&-%_7&n4p50qMTP|n!$=NkTr@6{-|9Msz{qheOR!$Q)be>}_4~kDz z;zfB#W>t=a*Hom+0;+XrmX)ULX(~nP9eK@*i?Ohx7+xun)q&5$a#Ms+LTZuG#XpzI zEV@w1mf*5xpbrpMQfJ*fB9}{?y5-PODQS8Ae^VKMT}`6x0!Z8Cf`qhs1WXj9v;wfx zHHivF%P$wq(M||JoZ71^09IZCV14kgrIgkODT#zj02zOvwvxrFOMs{*%5`ZCKsJW5 z^9!}Dd96vEh!m++j2@~b(V4=tUYKU3SyX(BgY#Uu*f}-@%wi&kKAE|4YZgzjS*l$x zxBCOhWo7lW$S#zeN Date: Sat, 8 Oct 2022 17:18:48 +0800 Subject: [PATCH 05/25] =?UTF-8?q?=E6=8F=90=E4=BA=A4iml=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- security-java/security-java.iml | 106 -------------------------------- 1 file changed, 106 deletions(-) delete mode 100644 security-java/security-java.iml diff --git a/security-java/security-java.iml b/security-java/security-java.iml deleted file mode 100644 index 209eb29..0000000 --- a/security-java/security-java.iml +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file -- Gitee From 24c400163bc5b3dc0a5cf193b09366a4714e8d61 Mon Sep 17 00:00:00 2001 From: liuxinfeng <624310862@qq.com> Date: Sat, 8 Oct 2022 18:18:23 +0800 Subject: [PATCH 06/25] =?UTF-8?q?=E6=8F=90=E4=BA=A4Security-menu=EF=BC=8C?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=9D=83=E9=99=90=E5=88=86=E9=85=8D=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=EF=BC=8CUserDao=E6=97=A0=E6=B3=95=E6=B3=A8?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../securityjava/config/SecurityConfig.java | 9 +- .../java/com/securityjava/dao/MenuDao.java | 19 +++ .../java/com/securityjava/dao/RoleDao.java | 15 +++ .../java/com/securityjava/dao/UserDao.java | 18 +++ .../filter/JwtAuthenticationTokenFilter.java | 8 +- .../com/securityjava/model/BaseEntity.java | 67 ++++++++++ .../java/com/securityjava/model/Menu.java | 57 ++++++++ .../java/com/securityjava/model/Role.java | 19 +++ .../com/securityjava/model/UserEntity.java | 100 ++++++++++++++ .../com/securityjava/service/RoleService.java | 5 + .../com/securityjava/service/UserService.java | 12 ++ .../service/impl/RoleServiceImpl.java | 10 ++ .../service/impl/UserDetailServiceImpl.java | 122 ++++++++++++++++++ .../service/impl/UserServiceImpl.java | 22 ++++ .../service/serviceImpl/AdminServiceImpl.java | 89 +------------ .../src/main/resources/application.yml | 4 +- .../securityjava/dao/mapper/MenuMapper.xml | 24 ++++ .../securityjava/dao/mapper/RoleMapper.xml | 14 ++ .../securityjava/dao/mapper/UserMapper.xml | 19 +++ security-java/target/classes/application.yml | 4 +- .../securityjava/config/SecurityConfig.class | Bin 7120 -> 7174 bytes .../filter/JwtAuthenticationTokenFilter.class | Bin 3440 -> 3534 bytes .../serviceImpl/AdminServiceImpl.class | Bin 5140 -> 1730 bytes 23 files changed, 541 insertions(+), 96 deletions(-) create mode 100644 security-java/src/main/java/com/securityjava/dao/MenuDao.java create mode 100644 security-java/src/main/java/com/securityjava/dao/RoleDao.java create mode 100644 security-java/src/main/java/com/securityjava/dao/UserDao.java create mode 100644 security-java/src/main/java/com/securityjava/model/BaseEntity.java create mode 100644 security-java/src/main/java/com/securityjava/model/Menu.java create mode 100644 security-java/src/main/java/com/securityjava/model/Role.java create mode 100644 security-java/src/main/java/com/securityjava/model/UserEntity.java create mode 100644 security-java/src/main/java/com/securityjava/service/RoleService.java create mode 100644 security-java/src/main/java/com/securityjava/service/UserService.java create mode 100644 security-java/src/main/java/com/securityjava/service/impl/RoleServiceImpl.java create mode 100644 security-java/src/main/java/com/securityjava/service/impl/UserDetailServiceImpl.java create mode 100644 security-java/src/main/java/com/securityjava/service/impl/UserServiceImpl.java create mode 100644 security-java/src/main/resources/com/securityjava/dao/mapper/MenuMapper.xml create mode 100644 security-java/src/main/resources/com/securityjava/dao/mapper/RoleMapper.xml create mode 100644 security-java/src/main/resources/com/securityjava/dao/mapper/UserMapper.xml diff --git a/security-java/src/main/java/com/securityjava/config/SecurityConfig.java b/security-java/src/main/java/com/securityjava/config/SecurityConfig.java index 5e6a04f..cb996c8 100644 --- a/security-java/src/main/java/com/securityjava/config/SecurityConfig.java +++ b/security-java/src/main/java/com/securityjava/config/SecurityConfig.java @@ -3,6 +3,7 @@ package com.securityjava.config; import com.securityjava.filter.JwtAuthenticationTokenFilter; import com.securityjava.security.MyError; +import com.securityjava.service.impl.UserDetailServiceImpl; import com.securityjava.service.serviceImpl.AdminServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; @@ -15,6 +16,7 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; @@ -38,8 +40,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private MyError.MyAccessDenied myAccessDenied; + @Autowired - private AdminServiceImpl adminService; + private UserDetailServiceImpl userDetailsService; @Bean @@ -52,7 +55,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { public void configureAuthentication(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception { authenticationManagerBuilder // 设置 UserDetailsService - .userDetailsService(adminService) + .userDetailsService(userDetailsService()) // 使用 BCrypt 进行密码的 hash .passwordEncoder(passwordEncoder()); } @@ -106,4 +109,4 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { httpSecurity.headers().cacheControl(); } -} \ No newline at end of file +} diff --git a/security-java/src/main/java/com/securityjava/dao/MenuDao.java b/security-java/src/main/java/com/securityjava/dao/MenuDao.java new file mode 100644 index 0000000..9aacd13 --- /dev/null +++ b/security-java/src/main/java/com/securityjava/dao/MenuDao.java @@ -0,0 +1,19 @@ +package com.securityjava.dao; + +import com.securityjava.model.Menu; +import com.securityjava.model.Role; + +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface MenuDao { + + /** + * 根据角色获取菜单列表 + * @param roles + * @return + */ + List getRoleMenuByRoles(@Param("roles")List roles); + +} diff --git a/security-java/src/main/java/com/securityjava/dao/RoleDao.java b/security-java/src/main/java/com/securityjava/dao/RoleDao.java new file mode 100644 index 0000000..a886db7 --- /dev/null +++ b/security-java/src/main/java/com/securityjava/dao/RoleDao.java @@ -0,0 +1,15 @@ +package com.securityjava.dao; + +import com.securityjava.model.Role; + +import java.util.List; + +public interface RoleDao { + /** + * 根据用户id获取用户 + * @param id + * @return + */ + List getUserRoleByUserId(Long id); + +} diff --git a/security-java/src/main/java/com/securityjava/dao/UserDao.java b/security-java/src/main/java/com/securityjava/dao/UserDao.java new file mode 100644 index 0000000..a703c20 --- /dev/null +++ b/security-java/src/main/java/com/securityjava/dao/UserDao.java @@ -0,0 +1,18 @@ +package com.securityjava.dao; + +import com.securityjava.model.UserEntity; + +public interface UserDao { + /** + * 根据用户名查找用户 + * @param username + * @return + */ + UserEntity getUserByUsername(String username); + /** + * 新增用户 + * @param user + */ + void insertUser(UserEntity user); + +} diff --git a/security-java/src/main/java/com/securityjava/filter/JwtAuthenticationTokenFilter.java b/security-java/src/main/java/com/securityjava/filter/JwtAuthenticationTokenFilter.java index c3677fa..7b6ff91 100644 --- a/security-java/src/main/java/com/securityjava/filter/JwtAuthenticationTokenFilter.java +++ b/security-java/src/main/java/com/securityjava/filter/JwtAuthenticationTokenFilter.java @@ -1,6 +1,7 @@ package com.securityjava.filter; +import com.securityjava.service.impl.UserDetailServiceImpl; import com.securityjava.service.serviceImpl.AdminServiceImpl; import com.securityjava.util.JwtTokenUtils; import io.jsonwebtoken.Claims; @@ -34,6 +35,9 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { @Autowired private AdminServiceImpl adminService; + @Autowired + private UserDetailServiceImpl userDetailService; + @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { final String token = request.getHeader(jwtTokenUtils.getTokenHead());//拿到请求头中的Token @@ -47,7 +51,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { // 从token中提取出之前存储好的用户名 String username = claims.getSubject(); // 查询出用户对象 - UserDetails user = adminService.loadUserByUsername(username); + UserDetails user = userDetailService.loadUserByUsername(username); // 将认证对象放到上下文中 UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken @@ -59,4 +63,4 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { } filterChain.doFilter(request, response);//执行下一个过滤器 } -} \ No newline at end of file +} diff --git a/security-java/src/main/java/com/securityjava/model/BaseEntity.java b/security-java/src/main/java/com/securityjava/model/BaseEntity.java new file mode 100644 index 0000000..b1ecfc7 --- /dev/null +++ b/security-java/src/main/java/com/securityjava/model/BaseEntity.java @@ -0,0 +1,67 @@ +package com.securityjava.model; + +import java.io.Serializable; + +/** + * + * 说明 :实体基础类,包含共有属性 + * + */ +public abstract class BaseEntity implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 4034437877924885763L; + protected Long id;//ID + protected Integer state;//状态 + protected String creator;//创建人 + protected String createTime;//创建时间 + protected String updator;//修改人 + protected String updateTime;//修改时间 + protected Boolean deleted=false;//删除标志 + + public Boolean getDeleted() { + return deleted; + } + public void setDeleted(Boolean deleted) { + this.deleted = deleted; + } + public String getCreateTime() { + return createTime; + } + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + public String getCreator() { + return creator; + } + public void setCreator(String creator) { + this.creator = creator; + } + public String getUpdateTime() { + return updateTime; + } + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + public String getUpdator() { + return updator; + } + public void setUpdator(String updator) { + this.updator = updator; + } + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public Integer getState() { + return state; + } + public void setState(Integer state) { + this.state = state; + } + +} diff --git a/security-java/src/main/java/com/securityjava/model/Menu.java b/security-java/src/main/java/com/securityjava/model/Menu.java new file mode 100644 index 0000000..6ebcd75 --- /dev/null +++ b/security-java/src/main/java/com/securityjava/model/Menu.java @@ -0,0 +1,57 @@ +package com.securityjava.model; + +public class Menu extends BaseEntity{ + + /** + * + */ + private static final long serialVersionUID = 4245833784962015367L; + + + private String menuName;//菜单名称 + private String menuUrl;//Controller路径 + private String menuCode;//菜单编码 + private Long parentId;//父菜单ID + private Integer menuType;//菜单类型:0-菜单1-按钮 + private Integer orderNum;//显示序号 + + public String getMenuName() { + return menuName; + } + public void setMenuName(String menuName) { + this.menuName = menuName; + } + public String getMenuUrl() { + return menuUrl; + } + public void setMenuUrl(String menuUrl) { + this.menuUrl = menuUrl; + } + public String getMenuCode() { + return menuCode; + } + public void setMenuCode(String menuCode) { + this.menuCode = menuCode; + } + public Long getParentId() { + return parentId; + } + public void setParentId(Long parentId) { + this.parentId = parentId; + } + public Integer getMenuType() { + return menuType; + } + public void setMenuType(Integer menuType) { + this.menuType = menuType; + } + public Integer getOrderNum() { + return orderNum; + } + public void setOrderNum(Integer orderNum) { + this.orderNum = orderNum; + } + + + +} diff --git a/security-java/src/main/java/com/securityjava/model/Role.java b/security-java/src/main/java/com/securityjava/model/Role.java new file mode 100644 index 0000000..adf315d --- /dev/null +++ b/security-java/src/main/java/com/securityjava/model/Role.java @@ -0,0 +1,19 @@ +package com.securityjava.model; + +public class Role extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = -3572463217368803762L; + private String roleName;// 角色名称 + + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName; + } + +} diff --git a/security-java/src/main/java/com/securityjava/model/UserEntity.java b/security-java/src/main/java/com/securityjava/model/UserEntity.java new file mode 100644 index 0000000..2aafef9 --- /dev/null +++ b/security-java/src/main/java/com/securityjava/model/UserEntity.java @@ -0,0 +1,100 @@ +package com.securityjava.model; + +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import java.util.Collection; +import java.util.List; + +public class UserEntity implements UserDetails { + + /** + * + */ + private static final long serialVersionUID = -9005214545793249372L; + + private Long id;// 用户id + private String username;// 用户名 + private String password;// 密码 + private List userRoles;// 用户权限集合 + private List roleMenus;// 角色菜单集合 + + private Collection authorities; + public UserEntity() { + + } + + public UserEntity(String username, String password, Collection authorities, + List roleMenus) { + this.username = username; + this.password = password; + this.authorities = authorities; + this.roleMenus = roleMenus; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public List getUserRoles() { + return userRoles; + } + + public void setUserRoles(List userRoles) { + this.userRoles = userRoles; + } + + public List getRoleMenus() { + return roleMenus; + } + + public void setRoleMenus(List roleMenus) { + this.roleMenus = roleMenus; + } + + @Override + public Collection getAuthorities() { + return this.authorities; + } + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } + +} diff --git a/security-java/src/main/java/com/securityjava/service/RoleService.java b/security-java/src/main/java/com/securityjava/service/RoleService.java new file mode 100644 index 0000000..23b1db9 --- /dev/null +++ b/security-java/src/main/java/com/securityjava/service/RoleService.java @@ -0,0 +1,5 @@ +package com.securityjava.service; + +public interface RoleService { + +} diff --git a/security-java/src/main/java/com/securityjava/service/UserService.java b/security-java/src/main/java/com/securityjava/service/UserService.java new file mode 100644 index 0000000..07fbe47 --- /dev/null +++ b/security-java/src/main/java/com/securityjava/service/UserService.java @@ -0,0 +1,12 @@ +package com.securityjava.service; + +import com.securityjava.model.UserEntity; + +public interface UserService { + /** + * 保存用户 + * @param user + */ + void saveUser(UserEntity user); + +} diff --git a/security-java/src/main/java/com/securityjava/service/impl/RoleServiceImpl.java b/security-java/src/main/java/com/securityjava/service/impl/RoleServiceImpl.java new file mode 100644 index 0000000..2a53b1f --- /dev/null +++ b/security-java/src/main/java/com/securityjava/service/impl/RoleServiceImpl.java @@ -0,0 +1,10 @@ +package com.securityjava.service.impl; + +import com.securityjava.service.RoleService; +import org.springframework.stereotype.Service; + +@Service +public class RoleServiceImpl implements RoleService{ + + +} diff --git a/security-java/src/main/java/com/securityjava/service/impl/UserDetailServiceImpl.java b/security-java/src/main/java/com/securityjava/service/impl/UserDetailServiceImpl.java new file mode 100644 index 0000000..d85affb --- /dev/null +++ b/security-java/src/main/java/com/securityjava/service/impl/UserDetailServiceImpl.java @@ -0,0 +1,122 @@ +package com.securityjava.service.impl; +import com.securityjava.dao.*; + +import com.securityjava.model.*; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; + +/** + * 获取用户相关信息 + * @author charlie + * + */ +@Service +public class UserDetailServiceImpl implements UserDetailsService { + private Logger log = LoggerFactory.getLogger(UserDetailServiceImpl.class); + + @Autowired + private UserDao userDao; + + @Autowired + private RoleDao roleDao; + @Autowired + private MenuDao menuDao; + + + public UserEntity loadUserByUsername1(String username) throws UsernameNotFoundException { + // 根据用户名查找用户 + UserEntity user=null; + try{ + user = userDao.getUserByUsername(username); + }catch (Exception ex){ + System.out.println(ex.getMessage()); + } + + System.out.println(user); + if (user != null) { + System.out.println("UserDetailsService"); + //根据用户id获取用户角色 + List roles = roleDao.getUserRoleByUserId(user.getId()); + // 填充权限 + Collection authorities = new HashSet(); + for (Role role : roles) { + authorities.add(new SimpleGrantedAuthority(role.getRoleName())); + } + //填充权限菜单 + List menus=menuDao.getRoleMenuByRoles(roles); + return new UserEntity(username,user.getPassword(),authorities,menus); + } else { + System.out.println(username +" not found"); + throw new UsernameNotFoundException(username +" not found"); + } + } + + @Override + public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException { + + String password=getPwdFromDB(userName); + BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); + password = bCryptPasswordEncoder.encode(password); + + Collection authList = getAuthorities(userName); + org.springframework.security.core.userdetails.User securityUser = + new org.springframework.security.core.userdetails.User + ( + userName, + password, + true, + true, + true, + true, + authList + ); + + return securityUser; + } + private String getPwdFromDB(String userName) throws UsernameNotFoundException { + + if(userName.equals("admin")) { + return "admin"; + } + else if(userName.equals("guest")) { + return "guest"; + } + else { + // log.info("登录用户:{} 不存在.", username); + throw new UsernameNotFoundException("登录用户:" + userName + " 不存在"); + } + + } + /** + * 获取用户的角色权限,为了降低实验的难度,这里去掉了根据用户名获取角色的步骤 + * * @param + * * @return + * */ + private Collection getAuthorities(String userName){ + List authList = new ArrayList(); + if(userName.equals("admin")){ + authList.add(new SimpleGrantedAuthority("ROLE_USER")); + authList.add(new SimpleGrantedAuthority("ROLE_ADMIN")); + } + else{ + authList.add(new SimpleGrantedAuthority("ROLE_USER")); + } + return authList; + } + + +} diff --git a/security-java/src/main/java/com/securityjava/service/impl/UserServiceImpl.java b/security-java/src/main/java/com/securityjava/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..40071c7 --- /dev/null +++ b/security-java/src/main/java/com/securityjava/service/impl/UserServiceImpl.java @@ -0,0 +1,22 @@ +package com.securityjava.service.impl; + +import com.securityjava.dao.UserDao; +import com.securityjava.model.UserEntity; +import com.securityjava.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class UserServiceImpl implements UserService{ + + @Autowired + private UserDao userDao; + /** + * 保存用户 + */ + @Override + public void saveUser(UserEntity user) { + userDao.insertUser(user); + } + +} diff --git a/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java b/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java index df2e909..7518f03 100644 --- a/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java +++ b/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java @@ -7,13 +7,6 @@ import com.securityjava.pojo.Auty; import com.securityjava.pojo.Role; import com.securityjava.service.AdminService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.authority.SimpleGrantedAuthority; -import org.springframework.security.core.userdetails.User; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UserDetailsService; -import org.springframework.security.core.userdetails.UsernameNotFoundException; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -21,37 +14,11 @@ import java.util.Collection; import java.util.List; @Service -public class AdminServiceImpl implements AdminService, UserDetailsService { +public class AdminServiceImpl implements AdminService { @Autowired private AdminMapper adminMapper; - //连接数据库获取账号密码权限方法 - //@Override - public UserDetails loadUserByUsername1(String username) throws UsernameNotFoundException { - // 从数据库中查询出用户实体对象 - Admin admin = adminMapper.selectNameUser(username);//根据用户名查询数据库用户信息 - // 若没查询到一定要抛出该异常,这样才能被Spring Security的错误处理器处理 - if (admin == null) {//如果admin为null则表示数据库中没有相关信息 - throw new UsernameNotFoundException("没有找到该用户");//抛出异常交给MyError类进行处理停止方法的执行 - } - Role role = selectRole(admin.getRoleid()); - Collection authorities = new ArrayList<>(); - authorities.add(new SimpleGrantedAuthority(role.getRolename())); - List authority = selectIdAuthority(role.getRoleid()); - if (authority == null) { - admin.setAuthorities(authorities); - return new User(admin.getUsername(), admin.getPassword(), admin.getAuthorities()); - } else { - for (String au : authority - ) { - authorities.add(new SimpleGrantedAuthority(au)); - } - admin.setAuthorities(authorities); - return new User(admin.getUsername(), admin.getPassword(), admin.getAuthorities()); - } - - } @Override public List selectUser() { @@ -86,56 +53,4 @@ public class AdminServiceImpl implements AdminService, UserDetailsService { - @Override - public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException { - - String password=getPwdFromDB(userName); - BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); - password = bCryptPasswordEncoder.encode(password); - - Collection authList = getAuthorities(userName); - org.springframework.security.core.userdetails.User securityUser = - new org.springframework.security.core.userdetails.User - ( - userName, - password, - true, - true, - true, - true, - authList - ); - - return securityUser; - } - private String getPwdFromDB(String userName) throws UsernameNotFoundException { - - if(userName.equals("admin")) { - return "admin"; - } - else if(userName.equals("guest")) { - return "guest"; - } - else { - // log.info("登录用户:{} 不存在.", username); - throw new UsernameNotFoundException("登录用户:" + userName + " 不存在"); - } - - } - /** - * 获取用户的角色权限,为了降低实验的难度,这里去掉了根据用户名获取角色的步骤 - * * @param - * * @return - * */ - private Collection getAuthorities(String userName){ - List authList = new ArrayList(); - if(userName.equals("admin")){ - authList.add(new SimpleGrantedAuthority("ROLE_USER")); - authList.add(new SimpleGrantedAuthority("ROLE_ADMIN")); - } - else{ - authList.add(new SimpleGrantedAuthority("ROLE_USER")); - } - return authList; - } -} + } diff --git a/security-java/src/main/resources/application.yml b/security-java/src/main/resources/application.yml index 9ddb152..035a732 100644 --- a/security-java/src/main/resources/application.yml +++ b/security-java/src/main/resources/application.yml @@ -14,8 +14,8 @@ mybatis: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - mapper-locations: classpath:mybatis/mapper/*.xml - type-aliases-package: com.securityjava.pojo + mapper-locations: classpath:/com/securityjava/**/mapper/*.xml + type-aliases-package: com.securityjava.model jwt: # \u52A0\u5BC6\u5BC6\u94A5 secret: iwqjhda8232bjgh432[xlh-smile] diff --git a/security-java/src/main/resources/com/securityjava/dao/mapper/MenuMapper.xml b/security-java/src/main/resources/com/securityjava/dao/mapper/MenuMapper.xml new file mode 100644 index 0000000..eff768a --- /dev/null +++ b/security-java/src/main/resources/com/securityjava/dao/mapper/MenuMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + diff --git a/security-java/src/main/resources/com/securityjava/dao/mapper/RoleMapper.xml b/security-java/src/main/resources/com/securityjava/dao/mapper/RoleMapper.xml new file mode 100644 index 0000000..42bc6db --- /dev/null +++ b/security-java/src/main/resources/com/securityjava/dao/mapper/RoleMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/security-java/src/main/resources/com/securityjava/dao/mapper/UserMapper.xml b/security-java/src/main/resources/com/securityjava/dao/mapper/UserMapper.xml new file mode 100644 index 0000000..358bd41 --- /dev/null +++ b/security-java/src/main/resources/com/securityjava/dao/mapper/UserMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + insert into t_user (username,password) values(#{username},#{password}) + + + diff --git a/security-java/target/classes/application.yml b/security-java/target/classes/application.yml index 9ddb152..035a732 100644 --- a/security-java/target/classes/application.yml +++ b/security-java/target/classes/application.yml @@ -14,8 +14,8 @@ mybatis: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - mapper-locations: classpath:mybatis/mapper/*.xml - type-aliases-package: com.securityjava.pojo + mapper-locations: classpath:/com/securityjava/**/mapper/*.xml + type-aliases-package: com.securityjava.model jwt: # \u52A0\u5BC6\u5BC6\u94A5 secret: iwqjhda8232bjgh432[xlh-smile] diff --git a/security-java/target/classes/com/securityjava/config/SecurityConfig.class b/security-java/target/classes/com/securityjava/config/SecurityConfig.class index ca2a81b32450799445f0ea22e82308822fd62cb0..3b65dfc1ac950554d922d373c8953e06bacf7ca5 100644 GIT binary patch delta 192 zcmV;x06+iGH-g%)H>#qO#27R7M7KpXB^p{o>T*(xS|g%B;k)L?8z& z2ctc63v%=wL7Fx@Fg;*lw`6CS#KSOovpRbfGh_1Pk9_)**D{+-{?91Rv|VGeprFF$ z0`8@}jEa-RByD&N80;7r7Mfh6nXMk(3JHIm}mTNs$PF|cTDV_@CJz!ts{D96NL z3nYaYSb(G{11p0$11Ezeg8+lo diff --git a/security-java/target/classes/com/securityjava/filter/JwtAuthenticationTokenFilter.class b/security-java/target/classes/com/securityjava/filter/JwtAuthenticationTokenFilter.class index 0e9b53b1f8a4f568436405e69934d8b882cd7ece..8c4ebb3ad041a0dab4fd45ce921e43233ab28b80 100644 GIT binary patch delta 729 zcma))$x{zUT zH??oQ>&iv9(C?O#UMArdDqhMphz_N4*>KTKl?z^}nod@d z5;SsQFPqPVM^~OK$BcL8`a1^pz--FRm%Q9`QIS;Kt^c-)@m98LHnT;M(%i#U+}Awd zp~BOonbKs)YNp94@|s5!6h%#mvZA7y!PRVKn_^Z|<#GLUV8nT%dCD_QE6?k#!Ni6d zFElTCrJ3WkVqUYr;_^~3Zna1LdknK_&NQt0g3~!B^)Lv@T2_f|5o?N-Nd(&@3X3(w z20K1rylN8C*`0#=FM(a`mMFj;_F~ai|KYr?`P?J27U*OR`(^E6k?j)BA$sLc z7?kWV-HdY_mlKrfp++Bz#2VTYGzq7hb~>cyuqbr04<+1?_y<@mYLlYbMNn!i{p-Q^ z4oU?h*|>~IA+zB{rJN;=R5>bw0TD(djGxpL$D{>+FjLy-;iUM@mZ(5PPE?L59s77{ I<#YAHA9J*QQUCw| delta 641 zcmXYu%Tg0T6o$W^328IaDOp&8XdvE|AlF3W1@OW}ML`3I3aA*P0!k2q1aISAx7MsI zeF-ZIt6XTgbz$)ezJU*5S)LhO^y&Yc{`>z=pZ>Y|cb)g+@0YJYn%53BbjR4pQHNt3 zcR4|iLoa0I4yQQnGQb&^vkV60A%}CE*W_G=8F7d+s=44$O?ME+g386<$|aY} zjB6$|lZyDva%rSETX^TKRz9eY)`lwzr?;Fh%$KH%bBmg*nrr?*WHDDygQ1p9nkmC| z@|qil0yj0c47Zs!%rI-X!(Gjsp~$@Eo?!tIDH)c?8@7S2c*!e8+W)1}6*pRItBhZxGL^Ad z*;1Cj>ZbaXXf>cn%1~QmSF%?%enx!~V6jzVG%P0ACfKYI*v<~gBJ5-rHc5Zfy!Qg` zeiI diff --git a/security-java/target/classes/com/securityjava/service/serviceImpl/AdminServiceImpl.class b/security-java/target/classes/com/securityjava/service/serviceImpl/AdminServiceImpl.class index 85081541123ef07c784a9440fe9173eefec21895..aeb265ca653e1c4755f26a37ca39233e6ece1528 100644 GIT binary patch delta 735 zcma))J5K^Z6ot<$kA-!Rr}##3RUQgHz$aQ-l3-;`B8iPLL9B_fvK}jcg9RogMhgo| zYyX9X@edf!EQ&-zVzKAWo!s-yy)%22eh!pgJ|CX|6tQc;!m=NJtPEfk1uaD_Yg*Q| zY-rguv1MZ0MCtZDAk>@dIvgt38b>FGm1@0uTx-BjtPlrBqeOjO3YziB7>~*S!cplLfB0t*^vc-0e*&dGY+z2FJq9= zWF(jxVYb957(Lm0h+8fUM5($MEQ(QOy8uIoGZVTIR%vsQnXa?4cQ78{5@;2fb|Xf+ z5Y{(h)TtSxmE&lX`Upn%+y+{I%n8RFX9+k?`+U8cM1tli?s^0h-4yQxt~ROc=_T3! zCAE8-A(0o{>CM|q%>0)q^eZ_e5svPey`+2}QVQwcDO1jreCi+4zR$o7H@h#p(1)~u R#b45bW6C+2@BA4{z!xEKI?ez9 literal 5140 zcmbVQX>?TO8Gi0C$(_txwhk|{ybkN|)eydhudDb*0N)J4k0*k75>ExWb3(<*AnI^j#kYbuh0{TV z@I(mT#u=G9G*1ilGb+9#{j<_MC(ZLggz-WM-^Gg|yoB#b^RkLpMAlhpPDt~#H0PxG zzQ{YT;s-%2#c^qVC@Vh_Hm?TI8N@=o7Ql~H{3M7*91q~9(!U0n<=9=JJfI3dvr=u5bn0(dUBs` zn=?Kjhh_orHzE;7`hHeLk zq@Egx#xi16TVq8NbFf9@mTg3{WRWm3x|vKzh22(nOgTP1D<+h2RS=LvB3D6;;}->s z%gq_K4q2}LWahUmLFBF~WV^Xbs*s+|3|jQ5X%M1%S9UgICZk)dWYUO>>qu6YBO6gL zr--QAOlP=VKNa?o;T-hcMYIKm8*c-p?Y5rE7zqY}quxl{Cdye+#7;zSbmzq$5VD!E zj2=JC&~*Yp#V=L7tzuNgB^B=|2yQzTH-^2SoYP}aLSmOL0huvuq7Y0QV!8N+?r3N% z5h`%R%z>1i$=U>XZ5hGFDv&#w;@IIy5FaSGyP>PG$_dX&J~N>}=~6J))vT)k3xiXR zJ0at^&GX2r^3^I}X*r&*y-TWVGt@-_1?2+NjE^lF5D$a^QcXmt@dUD8$_Q$1d7Un&2|P#Z8ZyN)J0ZEI+2hk}(A@vKl5X7OAuL!1O|s(!LO zsXI%;<`bvoW4A5!6N?DOtgIb3I!(!#`A$g03N?C-V56X+GWyJF!^*HIMZF_!8d|~T zGq_*HuQVLQfP(FnE~lJ#D_3p_;a)4#X=PK1d`+QxH{W^f=K0e%PhY!nYV==kzy8sS z7jK>#7nzq?i!}TiV;UaCmzcYSyluB_eZ-Baj_EbYm*Z&6M*VB(O5G?+IJ{(mK=PeTpY@h8#dh-mX?4IknvFUNtbA!&JMsTLhsGwBq7 z*&m&qyz$;ku225`?l}#A!CzVPm;Cd}GdJFP<;MAo8vceWtns^dc5gedH@0mzcb#$j z)}F3j1^1N|Hlj7{GhzxdJNpmug5j&GDy!lMpBAl3RmFQ%coDB)QJJVhIaaW+@~(S9 z%_~G{;ST3DP*`^3He6WfV$SJ&&?#76#<~36$dsv6LHN+CV}TPT#0Jbfg7s6R2=4%3fh#(=-m{5(hp!z*dNX1=z$^ za|y5+4{}D6(SaFqSa}{b2ypFk(`ERYCosc@o|fyFISGGXxMm!+?>DuKK^;S&cM^4d z;|R9;BmPN*`c{uY8^_EE%<|#kCeCJ$VNPpJq~6^LLZ zmSGi|(Lnnfu>(!$;Vgz03}6jT;$FOrwKzwpUnSUr(GKvN7IU!$TR9>k9$GTm#x-UN z-asd|6W?Wcf%IL(uokRP6f?m3^2bev0$s3mnxblrBEwB}1O#@b#RDZ-e5q2`o}D%2~13TZ_CN z^z8VeL-Pnv@@DopZD#M|dPq1en!sJYGFF=%R$`9Cof|+hI)KN>%G2-wHx;>o-KZkj zRKAPL`EI>kzOLSJ^5+dpzJfq0|4)_kf9Q7kEAl$3#MjM+QfPNp;XCMrh=<3Zg9jf2 zRrucR! Date: Sat, 8 Oct 2022 18:31:11 +0800 Subject: [PATCH 07/25] =?UTF-8?q?=E6=8F=90=E4=BA=A4Security-menu=EF=BC=8C?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=9D=83=E9=99=90=E5=88=86=E9=85=8D=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=EF=BC=8C=E9=92=88=E5=AF=B9=E5=A4=9A=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=AE=9E=E7=8E=B0MapperScan?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../securityjava/SecurityJavaApplication.java | 2 + .../{mapper => dao}/AdminMapper.java | 2 +- .../service/serviceImpl/AdminServiceImpl.java | 5 +-- .../src/main/resources/application.yml | 4 +- .../securityjava/dao}/mapper/AdminMapper.xml | 14 +++---- .../SecurityJavaApplicationTests.java | 10 +---- security-java/target/classes/application.yml | 4 +- .../SecurityJavaApplication.class | Bin 757 -> 848 bytes .../com/securityjava/mapper/AdminMapper.class | Bin 966 -> 0 bytes .../serviceImpl/AdminServiceImpl.class | Bin 1730 -> 1724 bytes .../classes/mybatis/mapper/AdminMapper.xml | 37 ------------------ .../SecurityJavaApplicationTests.class | Bin 1653 -> 1647 bytes 12 files changed, 16 insertions(+), 62 deletions(-) rename security-java/src/main/java/com/securityjava/{mapper => dao}/AdminMapper.java (95%) rename security-java/src/main/resources/{mybatis => com/securityjava/dao}/mapper/AdminMapper.xml (63%) delete mode 100644 security-java/target/classes/com/securityjava/mapper/AdminMapper.class delete mode 100644 security-java/target/classes/mybatis/mapper/AdminMapper.xml diff --git a/security-java/src/main/java/com/securityjava/SecurityJavaApplication.java b/security-java/src/main/java/com/securityjava/SecurityJavaApplication.java index 8a77a22..079dce8 100644 --- a/security-java/src/main/java/com/securityjava/SecurityJavaApplication.java +++ b/security-java/src/main/java/com/securityjava/SecurityJavaApplication.java @@ -1,9 +1,11 @@ package com.securityjava; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication +@MapperScan("com.securityjava.dao.**") public class SecurityJavaApplication { public static void main(String[] args) { diff --git a/security-java/src/main/java/com/securityjava/mapper/AdminMapper.java b/security-java/src/main/java/com/securityjava/dao/AdminMapper.java similarity index 95% rename from security-java/src/main/java/com/securityjava/mapper/AdminMapper.java rename to security-java/src/main/java/com/securityjava/dao/AdminMapper.java index e9eb85f..ba2bce7 100644 --- a/security-java/src/main/java/com/securityjava/mapper/AdminMapper.java +++ b/security-java/src/main/java/com/securityjava/dao/AdminMapper.java @@ -1,4 +1,4 @@ -package com.securityjava.mapper; +package com.securityjava.dao; import com.securityjava.pojo.Admin; import com.securityjava.pojo.Auty; diff --git a/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java b/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java index 7518f03..02693df 100644 --- a/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java +++ b/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java @@ -1,16 +1,13 @@ package com.securityjava.service.serviceImpl; -import com.securityjava.mapper.AdminMapper; +import com.securityjava.dao.AdminMapper; import com.securityjava.pojo.Admin; -import com.securityjava.pojo.Auty; import com.securityjava.pojo.Role; import com.securityjava.service.AdminService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Collection; import java.util.List; @Service diff --git a/security-java/src/main/resources/application.yml b/security-java/src/main/resources/application.yml index 035a732..ad5f747 100644 --- a/security-java/src/main/resources/application.yml +++ b/security-java/src/main/resources/application.yml @@ -14,8 +14,8 @@ mybatis: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - mapper-locations: classpath:/com/securityjava/**/mapper/*.xml - type-aliases-package: com.securityjava.model + mapper-locations: classpath:/com/securityjava/dao/mapper/**/*.xml + #type-aliases-package: com.securityjava.model jwt: # \u52A0\u5BC6\u5BC6\u94A5 secret: iwqjhda8232bjgh432[xlh-smile] diff --git a/security-java/src/main/resources/mybatis/mapper/AdminMapper.xml b/security-java/src/main/resources/com/securityjava/dao/mapper/AdminMapper.xml similarity index 63% rename from security-java/src/main/resources/mybatis/mapper/AdminMapper.xml rename to security-java/src/main/resources/com/securityjava/dao/mapper/AdminMapper.xml index fd772eb..face15e 100644 --- a/security-java/src/main/resources/mybatis/mapper/AdminMapper.xml +++ b/security-java/src/main/resources/com/securityjava/dao/mapper/AdminMapper.xml @@ -3,12 +3,12 @@ PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - select * from admin - select * from role where role_id = #{id} @@ -21,17 +21,17 @@ - select * from admin where admin_id = #{id} - select * from admin where username = #{name} - + insert into admin (username,password) values (#{username},#{password}) - \ No newline at end of file + diff --git a/security-java/src/test/java/com/securityjava/SecurityJavaApplicationTests.java b/security-java/src/test/java/com/securityjava/SecurityJavaApplicationTests.java index 3ef1b5a..b6a83c1 100644 --- a/security-java/src/test/java/com/securityjava/SecurityJavaApplicationTests.java +++ b/security-java/src/test/java/com/securityjava/SecurityJavaApplicationTests.java @@ -1,22 +1,14 @@ package com.securityjava; -import com.securityjava.mapper.AdminMapper; +import com.securityjava.dao.AdminMapper; import com.securityjava.pojo.Admin; -import com.securityjava.pojo.Auty; import com.securityjava.pojo.Role; -import com.securityjava.security.LoginService; import com.securityjava.service.serviceImpl.AdminServiceImpl; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.authority.SimpleGrantedAuthority; -import org.springframework.security.core.userdetails.User; -import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.password.PasswordEncoder; -import java.util.ArrayList; -import java.util.Collection; import java.util.List; @SpringBootTest diff --git a/security-java/target/classes/application.yml b/security-java/target/classes/application.yml index 035a732..ad5f747 100644 --- a/security-java/target/classes/application.yml +++ b/security-java/target/classes/application.yml @@ -14,8 +14,8 @@ mybatis: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - mapper-locations: classpath:/com/securityjava/**/mapper/*.xml - type-aliases-package: com.securityjava.model + mapper-locations: classpath:/com/securityjava/dao/mapper/**/*.xml + #type-aliases-package: com.securityjava.model jwt: # \u52A0\u5BC6\u5BC6\u94A5 secret: iwqjhda8232bjgh432[xlh-smile] diff --git a/security-java/target/classes/com/securityjava/SecurityJavaApplication.class b/security-java/target/classes/com/securityjava/SecurityJavaApplication.class index 1789dbd1c890bac8d722b567bee62ef8b249590d..9a8b5b2ed9875b43f70c3a24396a561c8e45fcda 100644 GIT binary patch delta 166 zcmey$dVx*q)W2Q(7#J8#7!$Fq!^^x8Dus}c`^DkGHCha7p3dxRwgBu zWESfe7ZhdYrRyi=<>i+E1@iOseG>}`Qj3C<6Z5PY8Cc5_b4pVg8N`$GbM=Z-lS_*- zODeMx%M$fc67%)6v?ix88nMapFvu~;PoBg0kdbq89g{sP4+A>`@8m;FI>JH>ObjAG R=ZG>eGKfVpFcve20{|;=Dvq9K3IGQH3zHE8EC&Vv0RR*L0C?aICIA2c diff --git a/security-java/target/classes/com/securityjava/mapper/AdminMapper.class b/security-java/target/classes/com/securityjava/mapper/AdminMapper.class deleted file mode 100644 index 8c738c58f6fbb230cfb324c0b37a07a02804efbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 966 zcmah{T~8B16unbhDz#z(QSl3+0o#x`A@L1j(if8^MNJ!hpY9H2>h8{FW){=G#)ChA zA4NPnLq)PQJj~v`Gw0lobMNKV#UCR2M7vFT+oT;vEh`flxgS;&$<>sE8>zU^LI91uvXYj8xjC6tkJKaHV38Mr6 z-Z_!(Ovm4a5vg?2SVlD!GkP~FGN)4cQ&}}hvmUx1#Qg$E%MKWAmL*nH_)xt)4yZ(AQ$BV^WmDg8dl55ey1TsN zpb?|B!1#)W1Lv??4ZTdZMUZ+1I-{nD<3-{nLI*}~02xF%C5&jS3lqsNsvJ?rzn_Ra zm*!)s1EcNR+TW6V{~pOhAZUKzfi^FNIxUC$Tbp0pV#HFrc`o@#=GrQ!%^c|Wm9}x1_31a(=FUacXjDQD#YHR$^JAer{qxL2A*)#NEsi$~Yt^8?r<&3Qq1~ wab%R7e1^q~QEu{iR;|g7th$WKlk-{Q88w0Ya7H~KTYRz|n**cqpR@c;k- diff --git a/security-java/target/classes/mybatis/mapper/AdminMapper.xml b/security-java/target/classes/mybatis/mapper/AdminMapper.xml deleted file mode 100644 index fd772eb..0000000 --- a/security-java/target/classes/mybatis/mapper/AdminMapper.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - insert into admin (username,password) - values (#{username},#{password}) - - - \ No newline at end of file diff --git a/security-java/target/test-classes/com/securityjava/SecurityJavaApplicationTests.class b/security-java/target/test-classes/com/securityjava/SecurityJavaApplicationTests.class index d65d3be040d7d7a12a9e0608c41f434271b0597a..1da86b7a2ebc9854f600aafeb0064f4f3957bfcd 100644 GIT binary patch delta 93 zcmey$^PXqI2Qej|cy*B$RQ Date: Sat, 8 Oct 2022 18:45:39 +0800 Subject: [PATCH 08/25] =?UTF-8?q?=E6=8F=90=E4=BA=A4Security-menu=EF=BC=8C?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=88=9D=E6=AD=A5=E5=AE=8C=E6=88=90=E7=89=88?= =?UTF-8?q?=E6=9C=AC=EF=BC=8C=E5=8F=AF=E4=BB=A5=E7=99=BB=E5=BD=95=E5=86=85?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../securityjava/config/SecurityConfig.java | 2 +- .../securityjava/config/SecurityConfig.class | Bin 7174 -> 7103 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/security-java/src/main/java/com/securityjava/config/SecurityConfig.java b/security-java/src/main/java/com/securityjava/config/SecurityConfig.java index cb996c8..6fc9268 100644 --- a/security-java/src/main/java/com/securityjava/config/SecurityConfig.java +++ b/security-java/src/main/java/com/securityjava/config/SecurityConfig.java @@ -55,7 +55,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { public void configureAuthentication(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception { authenticationManagerBuilder // 设置 UserDetailsService - .userDetailsService(userDetailsService()) + .userDetailsService(userDetailsService) // 使用 BCrypt 进行密码的 hash .passwordEncoder(passwordEncoder()); } diff --git a/security-java/target/classes/com/securityjava/config/SecurityConfig.class b/security-java/target/classes/com/securityjava/config/SecurityConfig.class index 3b65dfc1ac950554d922d373c8953e06bacf7ca5..b77a5855da0ed7627af7def84d6be8b4ec660082 100644 GIT binary patch delta 352 zcmW-dODlw77>2Lc;5Ft+Lrusb%1SgTWh|5(@UX^ z)uzdlZ-P3MHo>H3N|t3P!~J1@S2)t{Z|>{uh_ow|UvnbZoNCS#J^$M7EU$_C zip)n!f$JR0{G??1Y%YXLu7qnWp@Bw4i?cn?)VM3Xac+cL?lkwp1J7o}J*-|#Zt8$) z`>))0l}GD64WeG7GnwD2Fow$}vDhZbCOK$1pCwS`FoQ&g0g|Gz?3x765$QZK#1rYi DCEZ;2 delta 324 zcmWlTw@SlN97fNL$W8eXjS?iF26PgXV1dNVK~S)OL=be!B#JtS_y#)Y5_0Xm_m=$a zn#5i*`2fC%ix`*hz*)|h4vvSsncv$KP)Ei|CEfqiLaS!_pEHUE z)8Q^PUAo6T%baFjSYT1noYl4FE7vTWm`<78G{a753QI z90-RTX^w>xPK7fP8cR6mLXqDe8I1%6B164_@W^oAP_IG-G?&5^*P0uXcGZ|@UV%v# zmYZ+8Kj)T&`L!2$uecNLNeU?vLL2Rh&g{n$)8wenPxBx=@}zkdUU)ZA$E5l&#m+I+ o7|Sa&6|ORC)oF?Pw8BL{N?n>ZpI_OmL0^;2701IX6TIR11HK7Y&;S4c -- Gitee From ae31c407084fc79cfcb88f16b303d8de3cbf951e Mon Sep 17 00:00:00 2001 From: liuxinfeng <624310862@qq.com> Date: Sat, 8 Oct 2022 22:33:44 +0800 Subject: [PATCH 09/25] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E5=BA=9F=E5=BC=83=E7=9A=84xml=EF=BC=8Cdao=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../securityjava/config/SecurityConfig.java | 1 - .../controller/LoginController.java | 35 +++++----- .../com/securityjava/dao/AdminMapper.java | 26 ------- .../filter/JwtAuthenticationTokenFilter.java | 3 - .../handler/CustomAccessDeniedHandler.java | 64 ++++++++++++++++++ .../securityjava/handler/RbacPermission.java | 44 ++++++++++++ .../securityjava/{pojo => model}/Admin.java | 2 +- .../main/java/com/securityjava/pojo/Auty.java | 13 ---- .../main/java/com/securityjava/pojo/Role.java | 13 ---- .../securityjava/security/LoginService.java | 28 +------- .../securityjava/service/AdminService.java | 25 ------- .../service/impl/UserDetailServiceImpl.java | 59 +--------------- .../service/serviceImpl/AdminServiceImpl.java | 53 --------------- .../src/main/resources/application.yml | 2 +- .../securityjava/dao/mapper/AdminMapper.xml | 37 ---------- .../SecurityJavaApplicationTests.java | 14 ---- security-java/target/classes/application.yml | 2 +- .../securityjava/config/SecurityConfig.class | Bin 7103 -> 7103 bytes .../controller/LoginController.class | Bin 3443 -> 2688 bytes .../filter/JwtAuthenticationTokenFilter.class | Bin 3534 -> 3417 bytes .../classes/com/securityjava/pojo/Admin.class | Bin 4146 -> 0 bytes .../classes/com/securityjava/pojo/Auty.class | Bin 1900 -> 0 bytes .../classes/com/securityjava/pojo/Role.class | Bin 1900 -> 0 bytes .../securityjava/security/LoginService.class | Bin 2708 -> 2615 bytes .../securityjava/service/AdminService.class | Bin 921 -> 0 bytes .../serviceImpl/AdminServiceImpl.class | Bin 1724 -> 0 bytes .../SecurityJavaApplicationTests.class | Bin 1647 -> 717 bytes security-vue/src/views/login.vue | 15 ++-- 28 files changed, 135 insertions(+), 301 deletions(-) delete mode 100644 security-java/src/main/java/com/securityjava/dao/AdminMapper.java create mode 100644 security-java/src/main/java/com/securityjava/handler/CustomAccessDeniedHandler.java create mode 100644 security-java/src/main/java/com/securityjava/handler/RbacPermission.java rename security-java/src/main/java/com/securityjava/{pojo => model}/Admin.java (97%) delete mode 100644 security-java/src/main/java/com/securityjava/pojo/Auty.java delete mode 100644 security-java/src/main/java/com/securityjava/pojo/Role.java delete mode 100644 security-java/src/main/java/com/securityjava/service/AdminService.java delete mode 100644 security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java delete mode 100644 security-java/src/main/resources/com/securityjava/dao/mapper/AdminMapper.xml delete mode 100644 security-java/target/classes/com/securityjava/pojo/Admin.class delete mode 100644 security-java/target/classes/com/securityjava/pojo/Auty.class delete mode 100644 security-java/target/classes/com/securityjava/pojo/Role.class delete mode 100644 security-java/target/classes/com/securityjava/service/AdminService.class delete mode 100644 security-java/target/classes/com/securityjava/service/serviceImpl/AdminServiceImpl.class diff --git a/security-java/src/main/java/com/securityjava/config/SecurityConfig.java b/security-java/src/main/java/com/securityjava/config/SecurityConfig.java index 6fc9268..65791eb 100644 --- a/security-java/src/main/java/com/securityjava/config/SecurityConfig.java +++ b/security-java/src/main/java/com/securityjava/config/SecurityConfig.java @@ -4,7 +4,6 @@ package com.securityjava.config; import com.securityjava.filter.JwtAuthenticationTokenFilter; import com.securityjava.security.MyError; import com.securityjava.service.impl.UserDetailServiceImpl; -import com.securityjava.service.serviceImpl.AdminServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/security-java/src/main/java/com/securityjava/controller/LoginController.java b/security-java/src/main/java/com/securityjava/controller/LoginController.java index f5ca87b..8ebf861 100644 --- a/security-java/src/main/java/com/securityjava/controller/LoginController.java +++ b/security-java/src/main/java/com/securityjava/controller/LoginController.java @@ -1,11 +1,9 @@ package com.securityjava.controller; -import com.securityjava.pojo.Admin; +import com.securityjava.model.Admin; import com.securityjava.security.LoginService; -import com.securityjava.service.serviceImpl.AdminServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.web.bind.annotation.*; @@ -18,8 +16,7 @@ import java.util.Map; @CrossOrigin public class LoginController { - @Autowired - private AdminServiceImpl adminService; + @Autowired private LoginService loginService; @@ -40,20 +37,20 @@ public class LoginController { */ @PostMapping("/register") public String register(@RequestBody Admin admin) { - Admin admin1 = adminService.selectNameUser(admin.getUsername()); - if (admin1 == null) { - Admin admin2 = new Admin(); - // 调用加密器将前端传递过来的密码进行加密 - admin2.setPassword(passwordEncoder.encode(admin.getPassword())); - admin2.setUsername(admin.getUsername()); - // 将用户实体对象添加到数据库 - int i = adminService.addUser(admin2); - if (i > 0) { - return "注册成功"; - } else { - return "请联系管理员"; - } - } +// Admin admin1 = adminService.selectNameUser(admin.getUsername()); +// if (admin1 == null) { +// Admin admin2 = new Admin(); +// // 调用加密器将前端传递过来的密码进行加密 +// admin2.setPassword(passwordEncoder.encode(admin.getPassword())); +// admin2.setUsername(admin.getUsername()); +// // 将用户实体对象添加到数据库 +// int i = adminService.addUser(admin2); +// if (i > 0) { +// return "注册成功"; +// } else { +// return "请联系管理员"; +// } +// } return "用户名已存在"; } /** diff --git a/security-java/src/main/java/com/securityjava/dao/AdminMapper.java b/security-java/src/main/java/com/securityjava/dao/AdminMapper.java deleted file mode 100644 index ba2bce7..0000000 --- a/security-java/src/main/java/com/securityjava/dao/AdminMapper.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.securityjava.dao; - -import com.securityjava.pojo.Admin; -import com.securityjava.pojo.Auty; -import com.securityjava.pojo.Role; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Repository; - -import java.util.List; - -@Mapper -@Repository -public interface AdminMapper { - List selectUser(); //查询所有的用户信息 - - Role selectRole(@Param("id") int id);//查询该用户角色 - - List selectIdAuthority(@Param("id") int id); //查询该用户角色下的所有权限 - - Admin selectIdUser(@Param("id") int id);//根据用户ID查询用户信息 - - Admin selectNameUser(@Param("name") String name);//根据用户名查询用户信息 - - int addUser(Admin admin);//添加用户 -} diff --git a/security-java/src/main/java/com/securityjava/filter/JwtAuthenticationTokenFilter.java b/security-java/src/main/java/com/securityjava/filter/JwtAuthenticationTokenFilter.java index 7b6ff91..89f7ed8 100644 --- a/security-java/src/main/java/com/securityjava/filter/JwtAuthenticationTokenFilter.java +++ b/security-java/src/main/java/com/securityjava/filter/JwtAuthenticationTokenFilter.java @@ -2,7 +2,6 @@ package com.securityjava.filter; import com.securityjava.service.impl.UserDetailServiceImpl; -import com.securityjava.service.serviceImpl.AdminServiceImpl; import com.securityjava.util.JwtTokenUtils; import io.jsonwebtoken.Claims; import org.springframework.beans.factory.annotation.Autowired; @@ -32,8 +31,6 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { @Autowired private JwtTokenUtils jwtTokenUtils; - @Autowired - private AdminServiceImpl adminService; @Autowired private UserDetailServiceImpl userDetailService; diff --git a/security-java/src/main/java/com/securityjava/handler/CustomAccessDeniedHandler.java b/security-java/src/main/java/com/securityjava/handler/CustomAccessDeniedHandler.java new file mode 100644 index 0000000..b9a239b --- /dev/null +++ b/security-java/src/main/java/com/securityjava/handler/CustomAccessDeniedHandler.java @@ -0,0 +1,64 @@ +package com.securityjava.handler; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpStatus; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.web.WebAttributes; +import org.springframework.security.web.access.AccessDeniedHandler; +import org.springframework.stereotype.Component; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +/** + * 处理无权请求 + * @author charlie + * + */ +@Component +public class CustomAccessDeniedHandler implements AccessDeniedHandler { + + private Logger log = LoggerFactory.getLogger(CustomAccessDeniedHandler.class); + + @Override + public void handle(HttpServletRequest request, HttpServletResponse response, + AccessDeniedException accessDeniedException) throws IOException, ServletException { + boolean isAjax = ControllerTools.isAjaxRequest(request); + System.out.println("CustomAccessDeniedHandler handle"); + if (!response.isCommitted()) { + if (isAjax) { + String msg = accessDeniedException.getMessage(); + log.info("accessDeniedException.message:" + msg); + String accessDenyMsg = "{\"code\":\"403\",\"msg\":\"没有权限\"}"; + ControllerTools.print(response, accessDenyMsg); + } else { + request.setAttribute(WebAttributes.ACCESS_DENIED_403, accessDeniedException); + response.setStatus(HttpStatus.FORBIDDEN.value()); + RequestDispatcher dispatcher = request.getRequestDispatcher("/403"); + dispatcher.forward(request, response); + } + } + + } + + public static class ControllerTools { + public static boolean isAjaxRequest(HttpServletRequest request) { + return "XMLHttpRequest".equals(request.getHeader("X-Requested-With")); + } + + public static void print(HttpServletResponse response, String msg) throws IOException { + response.setCharacterEncoding("UTF-8"); + response.setContentType("application/json; charset=utf-8"); + PrintWriter writer = response.getWriter(); + writer.write(msg); + writer.flush(); + writer.close(); + } + } + +} diff --git a/security-java/src/main/java/com/securityjava/handler/RbacPermission.java b/security-java/src/main/java/com/securityjava/handler/RbacPermission.java new file mode 100644 index 0000000..3cd0dbf --- /dev/null +++ b/security-java/src/main/java/com/securityjava/handler/RbacPermission.java @@ -0,0 +1,44 @@ +package com.securityjava.handler; + +import com.securityjava.model.Menu; +import com.securityjava.model.UserEntity; +import org.springframework.security.core.Authentication; +import org.springframework.stereotype.Component; +import org.springframework.util.AntPathMatcher; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * RBAC数据模型控制权限 + * @author charlie + * + */ +@Component("rbacPermission") +public class RbacPermission{ + + private AntPathMatcher antPathMatcher = new AntPathMatcher(); + + + public boolean hasPermission(HttpServletRequest request, Authentication authentication) { + /* + by liuxf + 该函数在configure中被调用 + .access("@rbacPermission.hasPermission(request, authentication)")//根据账号权限访问 + */ + Object principal = authentication.getPrincipal(); + boolean hasPermission = false; + if (principal instanceof UserEntity) { + // 读取用户所拥有的权限菜单 + List menus = ((UserEntity) principal).getRoleMenus(); + System.out.println(menus.size()); + for (Menu menu : menus) { + if (antPathMatcher.match(menu.getMenuUrl(), request.getRequestURI())) { + hasPermission = true; + break; + } + } + } + return hasPermission; + } +} diff --git a/security-java/src/main/java/com/securityjava/pojo/Admin.java b/security-java/src/main/java/com/securityjava/model/Admin.java similarity index 97% rename from security-java/src/main/java/com/securityjava/pojo/Admin.java rename to security-java/src/main/java/com/securityjava/model/Admin.java index 9f6e7f7..d2ed8f6 100644 --- a/security-java/src/main/java/com/securityjava/pojo/Admin.java +++ b/security-java/src/main/java/com/securityjava/model/Admin.java @@ -1,4 +1,4 @@ -package com.securityjava.pojo; +package com.securityjava.model; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/security-java/src/main/java/com/securityjava/pojo/Auty.java b/security-java/src/main/java/com/securityjava/pojo/Auty.java deleted file mode 100644 index b5a6e60..0000000 --- a/security-java/src/main/java/com/securityjava/pojo/Auty.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.securityjava.pojo; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Auty { - private int autyid; - private String autyname; -} diff --git a/security-java/src/main/java/com/securityjava/pojo/Role.java b/security-java/src/main/java/com/securityjava/pojo/Role.java deleted file mode 100644 index 449e1c4..0000000 --- a/security-java/src/main/java/com/securityjava/pojo/Role.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.securityjava.pojo; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Role { - private int roleid; - private String rolename; -} diff --git a/security-java/src/main/java/com/securityjava/security/LoginService.java b/security-java/src/main/java/com/securityjava/security/LoginService.java index c7c8dab..c659e39 100644 --- a/security-java/src/main/java/com/securityjava/security/LoginService.java +++ b/security-java/src/main/java/com/securityjava/security/LoginService.java @@ -1,22 +1,16 @@ package com.securityjava.security; -import com.securityjava.pojo.Admin; -import com.securityjava.service.serviceImpl.AdminServiceImpl; import com.securityjava.util.JwtTokenUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; -import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -28,9 +22,6 @@ public class LoginService { @Autowired private JwtTokenUtils jwtTokenUtils; - @Autowired - private AdminServiceImpl adminService; - @Autowired PasswordEncoder passwordEncoder; @@ -61,23 +52,6 @@ public class LoginService { } - //将账号传入到连接数据库获取账号密码权限业务逻辑类AdminServiceImpl进行校验 - //如果存在与用户名相对于的用户信息则返回一个user类,回到LoginService类进行密码的校验 - //如果不存在与用户名相对于的用户信息则抛出一个异常,进行MyError类的认证失败处理返回给前端该用户不存在 -// UserDetails user = adminService.loadUserByUsername(username); -// if (!passwordEncoder.matches(/*原始密码*/password,/*加密过的密码*/user.getPassword())) { -// //进行密码的校验,校验失败返回前端密码错误 -// map = new HashMap(); -// map.put("code", 303); -// map.put("msg", "密码错误"); -// return map; -// } else { -// //密码正确 -// map = jwtTokenUtils.getToken(username);//生成携带用户名的Token -// map.put("code", 200); -// map.put("msg", "登录成功"); -// map.put("username", username);//返回给前端用户名方便前端渲染 -// return map;//返回给前端一个含有Token的map集合 -// } + } } diff --git a/security-java/src/main/java/com/securityjava/service/AdminService.java b/security-java/src/main/java/com/securityjava/service/AdminService.java deleted file mode 100644 index 6290a9b..0000000 --- a/security-java/src/main/java/com/securityjava/service/AdminService.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.securityjava.service; - - -import com.securityjava.pojo.Admin; -import com.securityjava.pojo.Auty; -import com.securityjava.pojo.Role; -import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -public interface AdminService { - List selectUser(); - - Role selectRole(@Param("id") int id); - - List selectIdAuthority(@Param("id") int id); - - Admin selectIdUser(@Param("id") int id); - - Admin selectNameUser(@Param("name") String name); - - int addUser(Admin admin); -} diff --git a/security-java/src/main/java/com/securityjava/service/impl/UserDetailServiceImpl.java b/security-java/src/main/java/com/securityjava/service/impl/UserDetailServiceImpl.java index d85affb..15793cc 100644 --- a/security-java/src/main/java/com/securityjava/service/impl/UserDetailServiceImpl.java +++ b/security-java/src/main/java/com/securityjava/service/impl/UserDetailServiceImpl.java @@ -36,8 +36,8 @@ public class UserDetailServiceImpl implements UserDetailsService { @Autowired private MenuDao menuDao; - - public UserEntity loadUserByUsername1(String username) throws UsernameNotFoundException { + @Override + public UserEntity loadUserByUsername(String username) throws UsernameNotFoundException { // 根据用户名查找用户 UserEntity user=null; try{ @@ -65,58 +65,5 @@ public class UserDetailServiceImpl implements UserDetailsService { } } - @Override - public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException { - - String password=getPwdFromDB(userName); - BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); - password = bCryptPasswordEncoder.encode(password); - - Collection authList = getAuthorities(userName); - org.springframework.security.core.userdetails.User securityUser = - new org.springframework.security.core.userdetails.User - ( - userName, - password, - true, - true, - true, - true, - authList - ); - - return securityUser; - } - private String getPwdFromDB(String userName) throws UsernameNotFoundException { - - if(userName.equals("admin")) { - return "admin"; - } - else if(userName.equals("guest")) { - return "guest"; - } - else { - // log.info("登录用户:{} 不存在.", username); - throw new UsernameNotFoundException("登录用户:" + userName + " 不存在"); - } - - } - /** - * 获取用户的角色权限,为了降低实验的难度,这里去掉了根据用户名获取角色的步骤 - * * @param - * * @return - * */ - private Collection getAuthorities(String userName){ - List authList = new ArrayList(); - if(userName.equals("admin")){ - authList.add(new SimpleGrantedAuthority("ROLE_USER")); - authList.add(new SimpleGrantedAuthority("ROLE_ADMIN")); - } - else{ - authList.add(new SimpleGrantedAuthority("ROLE_USER")); - } - return authList; - } - - } + diff --git a/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java b/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java deleted file mode 100644 index 02693df..0000000 --- a/security-java/src/main/java/com/securityjava/service/serviceImpl/AdminServiceImpl.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.securityjava.service.serviceImpl; - - -import com.securityjava.dao.AdminMapper; -import com.securityjava.pojo.Admin; -import com.securityjava.pojo.Role; -import com.securityjava.service.AdminService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -public class AdminServiceImpl implements AdminService { - - @Autowired - private AdminMapper adminMapper; - - - @Override - public List selectUser() { - return adminMapper.selectUser(); - } - - @Override - public Role selectRole(int id) { - return adminMapper.selectRole(id); - } - - @Override - public List selectIdAuthority(int id) { - return adminMapper.selectIdAuthority(id); - } - - - @Override - public Admin selectIdUser(int id) { - return adminMapper.selectIdUser(id); - } - - @Override - public Admin selectNameUser(String name) { - return adminMapper.selectNameUser(name); - } - - @Override - public int addUser(Admin admin) { - return adminMapper.addUser(admin); - } - - - - } diff --git a/security-java/src/main/resources/application.yml b/security-java/src/main/resources/application.yml index ad5f747..07fb00d 100644 --- a/security-java/src/main/resources/application.yml +++ b/security-java/src/main/resources/application.yml @@ -3,7 +3,7 @@ server: spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://localhost:3306/security?useSSL=true&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8 + url: jdbc:mysql://localhost:3306/security_demo?useSSL=true&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8 username: root password: 123456 # security: diff --git a/security-java/src/main/resources/com/securityjava/dao/mapper/AdminMapper.xml b/security-java/src/main/resources/com/securityjava/dao/mapper/AdminMapper.xml deleted file mode 100644 index face15e..0000000 --- a/security-java/src/main/resources/com/securityjava/dao/mapper/AdminMapper.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - insert into admin (username,password) - values (#{username},#{password}) - - - diff --git a/security-java/src/test/java/com/securityjava/SecurityJavaApplicationTests.java b/security-java/src/test/java/com/securityjava/SecurityJavaApplicationTests.java index b6a83c1..7eece32 100644 --- a/security-java/src/test/java/com/securityjava/SecurityJavaApplicationTests.java +++ b/security-java/src/test/java/com/securityjava/SecurityJavaApplicationTests.java @@ -1,9 +1,5 @@ package com.securityjava; -import com.securityjava.dao.AdminMapper; -import com.securityjava.pojo.Admin; -import com.securityjava.pojo.Role; -import com.securityjava.service.serviceImpl.AdminServiceImpl; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -13,23 +9,13 @@ import java.util.List; @SpringBootTest class SecurityJavaApplicationTests { - @Autowired - private AdminServiceImpl adminService; - - @Autowired - private AdminMapper adminMapper; @Autowired private PasswordEncoder passwordEncoder; @Test void contextLoads() { - Admin admin = adminMapper.selectNameUser("123"); - Role role = adminMapper.selectRole(admin.getRoleid()); - List auties = adminMapper.selectIdAuthority(role.getRoleid()); - System.out.println(role); - System.out.println(auties); } } diff --git a/security-java/target/classes/application.yml b/security-java/target/classes/application.yml index ad5f747..07fb00d 100644 --- a/security-java/target/classes/application.yml +++ b/security-java/target/classes/application.yml @@ -3,7 +3,7 @@ server: spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://localhost:3306/security?useSSL=true&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8 + url: jdbc:mysql://localhost:3306/security_demo?useSSL=true&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8 username: root password: 123456 # security: diff --git a/security-java/target/classes/com/securityjava/config/SecurityConfig.class b/security-java/target/classes/com/securityjava/config/SecurityConfig.class index b77a5855da0ed7627af7def84d6be8b4ec660082..016eeecef4ee1163592845fa641c1a237c5a0ef1 100644 GIT binary patch delta 103 zcmdmQzTbSqISEFk$>$|(7>y?LNXGG+Gq5sPGH^0jGYBx)OfHwqVsxJTNYb0pd$OL? z9m8M-Muu<(E`|sOVTLFMWrk=5V}>{eCx&>2K!zlS42EQeLWVSkYKBaPHijIAK8C!> H*3vBi3q}`H delta 103 zcmdmQzTbSqISEGP$>$|(7>y_MNXGG6Ft9RMF>o^2FbFW%PA-?sVsx4ONYb0pXR@Bu z9m5a?MurFmE`~@3VTNc1Wri3AV}^JJCx!%uK!#+742BejLWXpPYKAO^Hile=K8F0s H*3vBi4<{FB diff --git a/security-java/target/classes/com/securityjava/controller/LoginController.class b/security-java/target/classes/com/securityjava/controller/LoginController.class index 064fb2022b739bd109314343fba21588d69cd698..19f911593be037c34a83c5ae2d02f9d00ab490e3 100644 GIT binary patch literal 2688 zcma)7ZEqA+6h626+GQ=Zlok|`BGT;(T*dMt#cC-9l`Sn>D89s)+1bnX;_Te@&TMP_ zs9!*1LJS`y!9a|}e({YM8a2`H{tkC7f5Ld~%XXc(c=XuV3&bep)`uDd# z0ALK>$v_vJ>4Ya>Is<3noVvW8fj8jIG@MUEJ`FQzxR8d~G|Z*pVhRc=m?w}mM46lO zOfGSq5y<6rQK1&oYm(b5*R&!g)MN47Y#OPn!?s>E=-HSiM)_y zYE>mS%U7jVVaq~(K#NQ>EqYbcZ6Q~v<^|Bnnk|;OWF>^%UezoM-AmJ^E=o)in1}>x z!nCC@3?^M^ro1(BCLCP}&KrqA1O2N^qM=%=&1gbjz$ri`*>vOE4!a8~LkP zFqOlSX4FuTByDbE|Hfi_92=^>b+!Wgu*NL=v?#40TUxR*w=iP@N46%Hp_yemZ>#pg z_)gjeh}SHI)0=AwyV3Jxq#j-?X}ZoVi&iD8q8xNiGVIJnA^FD)X?hnms~`-P8!XJ` zr{7mZgF^(yA~B;hKF9nLQ#aGN6v7UHE29EWQ1^AxVg}REuMd-GCS|YW23@oAOyNOw zU6QqGNwcwf0bkeb`nFt>+{A5!ab2_P+j2=^*J59l2=s4EqG?y&Y3ey;=0#2F>?~JD ztJfJG?GtiXb^YV!M3i;~Y?pR8R%7eUHYJ5+%}S1QZafP+p)U*Dp*sbav#t(S#5lNzj5b=SNZktzFfcYAoNOA ztMzK97uC3XfBnaA8ef0<==MzlZTsJU{?NGfYuMgc`@R0zy|BH0{obS7-?r={p;7(# ziGHS4q70IMyA|8?bfa8Y_<1e)OPtCwNZ`uL1el z3E72L1po-O8?RZ{0iJ@VafNEYGmvnC&p-@m0lJ5OfsT=f5W|1`AtZi6TL-jp1{|C| z*SCp-QLq=DMZA6J9mo3s?8m1Bj(NPPU38)GIs6}Z7l;MV!$GvARJw!sfFEWU!Z@{w zSI3Ym`5FJQvWaEaFB2WMv+Dl9zsGTP^>2vB%JnX)*@7!>BmqNcEEze zj_U5NUO>}}5xD6f?)lAekN9w3Lfo+k+|D5G#m#Y#`f!gS?(qoROc3|V=C~((xGy8_ x$q3wSLEQH?#~t_Ko>Etf%k;${V+bj$skS%v7@C_VhF0(M#X~*h2aoJLKqD} z3t=pT(;>t{7!N@Y!3ZKA#2E%jiH>Xf05>Nzl{0LQsK&T#aW!FT_SBd%q0q+pmRY;T z<1xA2V1Lwv3buaC6aCA90eEu(g=n zt;B_)lUar}g$H`<7{Z-rRUUUT6$C|TX*ah=jcA`D5@mCfIBzW)xJf=F4{3VTo4P*3 zvg!CZC0bCJP+|#+M?g+Hv3_BZWY1VoEzf^iKR=V;mc8GIPSI&0laFW?F=l9au3*I! zeMBCxMOBh{z=_uu2By)kDS=Pz$s~0hLxr3>%%7kZVW_T4=U^f1uA;Ha z7M-H1+_L1j$>S6{xzFTO{iBAdo#Vu*dQ`FcjTo=1?eC3ro)ibw)-$vg#VnSOL)@DV z*=6cC4Z|(~7eWDEF1w!t7LRe2^p+EeG%0(kuGSR`%^=MLS0#{$M-`hgou})HUEPdI zK-0;MLR?qu>Sk1eQ98ipQHB)@Nu=dMJ0xe7!UIOaRQW+oG-0(f4|2VK-& z^;2o(%qbhsUzi=HVOhPVMx(1u!g{s)V&z7sNRUAL1hkALA1VpNhw4I8S3T^>8|Q@ypbutH~?3XaLRMo1H&@ZSLXY zxx3%bUA>t6`Z@{cu1%*d%_gsYm7IN${P}wF<}|~~)P?EP7k5%OFJ~)k{-w zB&s6wsU~Zcx^-v%-Vdp7KYw!LDnm~G&mVVF*B%whQ?rkgS8f-|lb3Ekx$$F0-dGTb zXU|BQSkCBk+OBtK%&FOBIZ<}JF;tFl`zRHkPLs{uWoA6X#)2cWJ?gz!s0!-bQR{8< zLP_B~-df~<(l;x^VzG4%xV#x0zGGA| z2gC^0Ri3$kyiuVLTinitxW;RoAx`(G(8{GHs6?Z#qiah{@h+^R|Aki3|4U`?iB1B; zOSB8nx`tMtXu1L!wNaj|g7(y-^xQyJGOdi(@`hQkUmTd%=qW&fW!Okh$yGot>S)KP zlN(U(7$0z`081Nwg|Bf2W%TpUp!`1R`H;ie;NUDL8R@2R#9Jep2(Ou>ep)vX86v_+ z49By@B-~8DmJ?tWw%~P=2L;_$dZE(9HnI~={7pQ{Y3(8&0l{Mi!S1F%vGXxP$7WH{ z(@Y=2g4`oi`Y;2j+0|Mk44P-Kc$>e*{~ZEVOYT=Ky|YZ8Z#3S>kH#MCB^wcqW{Qo-URhODej*Ng5?Yq#BWh>`neHQ_77Ojz zFJ7FGchK8`BDl-)aeGSRc6x9R67HcQxYhZ%M@r)!_TY9A?wdt$Yw~fAm&Sd|gBu~- x?jpF$^Knm=#_jRo_7ZMi5!@B|xWlD!-}d14Q#uDItv(!a8YxU~M`=F@{0H4GhIaq} diff --git a/security-java/target/classes/com/securityjava/filter/JwtAuthenticationTokenFilter.class b/security-java/target/classes/com/securityjava/filter/JwtAuthenticationTokenFilter.class index 8c4ebb3ad041a0dab4fd45ce921e43233ab28b80..a77f3d6cd9aeb2ab4cfcac049f9209d5ae64b846 100644 GIT binary patch delta 675 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 diff --git a/security-java/target/classes/com/securityjava/pojo/Role.class b/security-java/target/classes/com/securityjava/pojo/Role.class deleted file mode 100644 index 398b5a10af052e52f9a57c3d7b336fa6835f6e9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1900 zcma)6U2ofD6n@^sPMpMTv#@0CR#?Xd%jd#iFxE5!)^!kQO4XuCa5Xov8kaOKiG##n z*$sE>rWYWwOaf_w8z%9afbksLBwdszbZwR-#2U9a!-_G=1>ecRg!?W6euJ+yVVP3whCr)O^s5BKc;7uH_a_jg-X z_rBG4L=Kgj*Kr04%bP9tusX0?!@lEv=jSc0K0EO2J~O34s~}W1e>##l#_Vr~R+r{47<|5WV7I(l;VWX}z6eP8N@FUUJtR_FMKnN9K|ckgo~mCSJi=6ItXG&cA#h zCaQST#5pXQcnud#ydmOSSX4MSy&`vpPPc9MO}vYn3Z|sW3n)&zZsId+3TbjG<(2=S zsuSFT$;H0N`AxzF0JBBw=*aGIJ1etBcdF?yKX+)EEAi6TxWwC%;eCqmM-coIaUf5E zZDEmgiBgqZk?X~up^kmC^Q19fnZgC0&ACmMFY=(5`Ft<$D8#lX#a6Y-Go+TZKXB#|%*v8B zLfkjk1nMXzPzU|q2y%`4-NseqSzH!16bOF=*9m@+x+rcE#S%{%%8ZpmJZ}7j`8X=( z-^j&rjeld@)>XEp$(o04-C|IIR+oOJ$9@ufeO!yq3Z#}0`+^S?F9}t$3lAAjBQK@X6vG9|7t6 zG9u5pQX2bKiY-H_=LBaWN0cl$Z(msF4nxSo=YK`w%O^-?QX`mB>Iie0`QRKQ%Pf$L zke*)a0G!}X%K+!08K=6cwcosquV?s<21Kt@apTJt5 zz&EhCpo$A0z#Ff95iil6)v_$Bw*H>!{`>Eq-u}3EtG)GgXZs6qiglNLOh)M9isq_I zh-*= z%~Q=YMO*bvGuv1$)#sa)53To`GwQ7sThJ^@m4K5ME&qFH#YvF#I6{v<8_sqlSke?c zij;)w@tm?^%>QP`{Ydq?Ueokgqq+Ic{$aI3SVkPhK^fI9v4_OMVY>hGS*F{6 zd~sn}a+ik)_R1|SR*AJ!Td2=LxKGfCLOcC}-fsd&IVLxSPH|j*N3S1?d}1&J3vfH%I4m*Cp<5JECpYwv%p|6l*?y|)g2In?~I{p~vt=Y4>qO!zs%q~dk} z4^u&=Ne8*ZjN-1Y+zT+veIE}3JY+7&JPSTDJ|6jqD<1oJ5+KY|#j^k%Oz7}jBQNyo zrQ(%h(I8Y@ug_PO^W}wl;dArjq@B%`3gx+ctx<6D28kJ`Qi`qSowZt_{-Ky{WM$K? z{mav(>Pl>M7fAyfJ1sMuRV<0u_9RCfxt~1MV1zR^J)Aa}bt^`{o3J7s5ps&W&1>EW z#pW#qw_=TV6>XMTF|eFUF0Uxrl&L7PHdWraKdqD}Le1Up?F_9_w^^fMvrc0(;r(Sc zEliGa9D`0d(tVPk`Pf3R|W3H x+$N()Dy}I~JNU5_*A*k}FNvYV&Q0mGL?+Crto){^>c7zEI@XTk|4;iC{00&zXwv`y diff --git a/security-java/target/classes/com/securityjava/service/AdminService.class b/security-java/target/classes/com/securityjava/service/AdminService.class deleted file mode 100644 index fb5d28b38fe3d6342e1b667b87cee9f8177937ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 zcmah{%We}f6ul04&=N}1QlPwwDpe#KtV--!A!So3Qh2Bl?422tI-S^&?Fs6yvET#v zD8#Xy&{orkg~xO4bMEmy_x}F#^A{1lr-K%~YSC*(n@$!o^Ix5`jCQ)c;Z!UHFTE=G zP&t3XXk(-%TKLjRM#mMv=`b@h?qpV4<*y=nZl;F!^O@2oAHZKKoSOm(4!VQh8b$yB zzWq`93zL5lR?MWA)-kH7oYCQVslA%XZ_250A^+X?wKiUOWi*gSLt`gg%tdw~xf)LKG#Q(@E72@_q@?PywUe@WhG>Z>y)L2~`L^;UjOAp2T|FtDMQxH|r}- z9x>WVj87;yagMvy)az_pC8=xB8MQ>7uY}haofy3VY!IPKXwk@&Hj`&6w5SvBN761- zCf@}k813IS|CZ<7=((E*1HOl*{V?{DJG4$3e>InUnF_WaRb~Za7i7}7EPJ z^LUE!Y%;B7j<|uS7ULG($KM9x28zM<0IMB1ZLEimHbL5=M@Z5w|6V^<4VZyoz z8)>{u<5e1)4E@|`NOy-fo5Ew5E!R}T_C>AbNqu(APq^)HWp8&dM48xYxmq^FzVv0a zF1B4)X|APmeTI#)@(yjk=}GtSz~c>Zs=Uv3RdCn04|q*0@66_x1be%s)v5G^L$bX^ z=}NuD(38vWGbG1#stRpg<|b;~0UD-l33dU8`8 zw_CTl)j45LnIfihrF;y-00^Ft4g)JO4DASgq?`}jv{MU@${Y^OmK^Hekuq1sFlrPd zrWc~S#Sm5J?x9`L=Ar_7)`e!+f^59OU>eBbK*-o7TOns97nP2y@m+~OxG-axh;s~v5%8YVq@dwy9`jfyY zMFR%W?ohNs0LCy*D`t8^C_`SQmBD2ezaw#u9)_>9>Q)%ERa8ARC`#3l+fo}x5IrLVGGgNk#7>NHz}E;co?tuR1VSv|5?nHNSq|@`)fkT=?QHFi?C68? z0ZFBtA`kh1d{ioDb|nYA;Fs;~p6=7#r+em~fB*U$z#TlPBEaG#rm%DZ%Tu_4l`3vR z`oFKLSk3=#P2x80RPi;|Dp;@Ju0WvLJrgx`^2UT(V7(FAo=kPvPmCLM)Eh-5I~&RE zUfh-S13})fA#nahKXRt0cTH+qU0shN>y$G#N(JsVY_ccQI5E-Qt3>tmTbukWTUte_ ze5FEXlYvz417yAL>|2xQHesi-`ktyd)``I7VtH+4^Kx<@hMbC3nleNCQ54#?58FC2 z|ENnDCWF{nISP}{562U7V$(#%Z3&Fk7Iy{84~WY|4HM~|ey^pImx?_LOgC((y1Obd zULP9E?zJHavRHd_$nz8OT#w_f2{XoC>eQvo8iY1-`WM%*s!f3Lj0%B^MWEPrhAc3w zoLFDW+%ax1c@bbp8q#O zU~*48KXud27MQJ7^Q7J=Fkjm~4u7~Svq!_{;b(HJ?KZFNYwMp4ff)~3SgQjBH3zBF zJ(gqpr0Hz#Ypi_E9dg_xt$J*0CWAO^7O40syKcm|gH+|5Z!GR&fzM#TXK@TAe1enU zO{F$Ld78517ouRB!KVcq{Ql7T8KWenpd4TN6XLfF=5u~MC2(V0_FIblMou^-k5vS;TnRr)-
- 进入 - - - - - + @@ -33,8 +28,8 @@ 取 消 注 册 - - + +
@@ -94,9 +89,7 @@ }, methods: { - login(){ - this.dialogVisible = true; - }, + // logout() { // this.$store.commit('del_token'); // this.getToken(); -- Gitee From ad4d4c01f235b9907eddbde43fa3dd59648459bb Mon Sep 17 00:00:00 2001 From: liuxinfeng <624310862@qq.com> Date: Sun, 9 Oct 2022 00:21:19 +0800 Subject: [PATCH 10/25] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- security-vue/package-lock.json | 2 +- security-vue/package.json | 1 + security-vue/src/assets/css/global.css | 6 + security-vue/src/layout/aside.vue | 23 ++++ security-vue/src/main.js | 3 + security-vue/src/router/index.js | 8 +- security-vue/src/views/biz/main1.vue | 14 +++ security-vue/src/views/biz/main2.vue | 14 +++ security-vue/src/views/biz/main3.vue | 14 +++ security-vue/src/views/index.vue | 150 +++++++++---------------- security-vue/src/views/index1.vue | 111 ++++++++++++++++++ security-vue/webpack.config.js | 2 +- 12 files changed, 248 insertions(+), 100 deletions(-) create mode 100644 security-vue/src/assets/css/global.css create mode 100644 security-vue/src/layout/aside.vue create mode 100644 security-vue/src/views/biz/main1.vue create mode 100644 security-vue/src/views/biz/main2.vue create mode 100644 security-vue/src/views/biz/main3.vue create mode 100644 security-vue/src/views/index1.vue diff --git a/security-vue/package-lock.json b/security-vue/package-lock.json index 949dcd2..4bb7a12 100644 --- a/security-vue/package-lock.json +++ b/security-vue/package-lock.json @@ -525,7 +525,7 @@ "babel-plugin-syntax-dynamic-import": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "integrity": "sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA==", "dev": true }, "babel-plugin-syntax-exponentiation-operator": { diff --git a/security-vue/package.json b/security-vue/package.json index 2dd5b94..ce1e34d 100644 --- a/security-vue/package.json +++ b/security-vue/package.json @@ -23,6 +23,7 @@ "autoprefixer": "^6.6.0", "babel-core": "^6.24.1", "babel-loader": "^6.4.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", "babel-preset-vue-app": "^1.2.0", "css-loader": "^0.27.0", "file-loader": "^0.10.1", diff --git a/security-vue/src/assets/css/global.css b/security-vue/src/assets/css/global.css new file mode 100644 index 0000000..2b3e4ac --- /dev/null +++ b/security-vue/src/assets/css/global.css @@ -0,0 +1,6 @@ +*{ + margin:0; + padding:0; + box-sizing: border-box; + height: 100%; +} diff --git a/security-vue/src/layout/aside.vue b/security-vue/src/layout/aside.vue new file mode 100644 index 0000000..24f2c16 --- /dev/null +++ b/security-vue/src/layout/aside.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/security-vue/src/main.js b/security-vue/src/main.js index 5136bd5..86c67fa 100644 --- a/security-vue/src/main.js +++ b/security-vue/src/main.js @@ -7,6 +7,9 @@ import VueAxios from 'vue-axios' import router from './router/index' import store from './store/index.js' + +//import './assets/css/global.css’; + Vue.prototype.$httpApi = axios Vue.use(VueAxios, axios) Vue.use(ElementUI) diff --git a/security-vue/src/router/index.js b/security-vue/src/router/index.js index 091217f..a360d6a 100644 --- a/security-vue/src/router/index.js +++ b/security-vue/src/router/index.js @@ -29,7 +29,13 @@ export default new VueRouter({ //起名字 name: 'Index', //组件 - component: Index + component: Index, + children:[ + {path: '/index/menu1',component: () => import('../views/biz/main1.vue')}, + {path: '/index/menu2',component: () => import('../views/biz/main2.vue')}, + {path: '/index/menu3',component: () => import('../views/biz/main3.vue')} + ] + }, ] }) diff --git a/security-vue/src/views/biz/main1.vue b/security-vue/src/views/biz/main1.vue new file mode 100644 index 0000000..2976790 --- /dev/null +++ b/security-vue/src/views/biz/main1.vue @@ -0,0 +1,14 @@ + + + + + diff --git a/security-vue/src/views/biz/main2.vue b/security-vue/src/views/biz/main2.vue new file mode 100644 index 0000000..96e0fea --- /dev/null +++ b/security-vue/src/views/biz/main2.vue @@ -0,0 +1,14 @@ + + + + + diff --git a/security-vue/src/views/biz/main3.vue b/security-vue/src/views/biz/main3.vue new file mode 100644 index 0000000..2ad16e1 --- /dev/null +++ b/security-vue/src/views/biz/main3.vue @@ -0,0 +1,14 @@ + + + + + diff --git a/security-vue/src/views/index.vue b/security-vue/src/views/index.vue index 3a8faae..246e9c5 100644 --- a/security-vue/src/views/index.vue +++ b/security-vue/src/views/index.vue @@ -1,104 +1,60 @@ +import Header from "../layout/header"; +import Aside from "../layout/Aside" +export default { + name: 'Index', + components:{Header,Aside}, + props: { + msg: String + } +} + diff --git a/security-vue/src/views/index1.vue b/security-vue/src/views/index1.vue new file mode 100644 index 0000000..6ab8c13 --- /dev/null +++ b/security-vue/src/views/index1.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/security-vue/webpack.config.js b/security-vue/webpack.config.js index 442303c..8770f89 100644 --- a/security-vue/webpack.config.js +++ b/security-vue/webpack.config.js @@ -24,7 +24,7 @@ module.exports = (options = {}) => ({ test: /\.js$/, loader: 'babel-loader', options: { - presets: ['es2015'] + plugins:['syntax-dynamic-import'] }, include: [resolve('src')] }, -- Gitee From 4189d6ec7961a23df2ec6e125239ad952dfaf4f5 Mon Sep 17 00:00:00 2001 From: liuxinfeng <624310862@qq.com> Date: Sun, 9 Oct 2022 00:34:18 +0800 Subject: [PATCH 11/25] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- security-vue/src/views/biz/main1.vue | 99 ++++++++++++++++++++++++++-- 1 file changed, 94 insertions(+), 5 deletions(-) diff --git a/security-vue/src/views/biz/main1.vue b/security-vue/src/views/biz/main1.vue index 2976790..0942a6e 100644 --- a/security-vue/src/views/biz/main1.vue +++ b/security-vue/src/views/biz/main1.vue @@ -1,14 +1,103 @@ - -- Gitee From 5ced4654097655205203c0f3ae8f9814b08b87be Mon Sep 17 00:00:00 2001 From: liuxinfeng <624310862@qq.com> Date: Sun, 9 Oct 2022 00:37:55 +0800 Subject: [PATCH 12/25] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- security-vue/src/layout/header.vue | 47 ++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 security-vue/src/layout/header.vue diff --git a/security-vue/src/layout/header.vue b/security-vue/src/layout/header.vue new file mode 100644 index 0000000..3700e9b --- /dev/null +++ b/security-vue/src/layout/header.vue @@ -0,0 +1,47 @@ + + + + + -- Gitee From 6149247225ac9b80281595f4553b56706ed117c5 Mon Sep 17 00:00:00 2001 From: liuxinfeng <624310862@qq.com> Date: Sun, 9 Oct 2022 08:17:34 +0800 Subject: [PATCH 13/25] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- security-vue/src/layout/aside-dongtai.vue | 76 +++++++++++++++ security-vue/src/views/index.vue | 4 +- security-vue/src/views/index1.vue | 111 ---------------------- 3 files changed, 78 insertions(+), 113 deletions(-) create mode 100644 security-vue/src/layout/aside-dongtai.vue delete mode 100644 security-vue/src/views/index1.vue diff --git a/security-vue/src/layout/aside-dongtai.vue b/security-vue/src/layout/aside-dongtai.vue new file mode 100644 index 0000000..ce349ca --- /dev/null +++ b/security-vue/src/layout/aside-dongtai.vue @@ -0,0 +1,76 @@ + + + diff --git a/security-vue/src/views/index.vue b/security-vue/src/views/index.vue index 246e9c5..27db0ca 100644 --- a/security-vue/src/views/index.vue +++ b/security-vue/src/views/index.vue @@ -5,7 +5,7 @@