From be0b7f8b124fbaa58aa02c068d99d52bcab86ede Mon Sep 17 00:00:00 2001 From: Augcl <17674666882@163.com> Date: Wed, 16 Oct 2024 20:33:36 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=B7=BB=E5=8A=A0=E6=9D=83=E9=99=90?= =?UTF-8?q?=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/jeecg/common/api/CommonAPI.java | 9 ++++++ .../java/org/jeecg/config/shiro/ShiroConfig.java | 2 +- .../java/org/jeecg/config/shiro/ShiroRealm.java | 33 ++++++++++++++++++++++ .../system/service/impl/SysBaseApiImpl.java | 17 +++++++++++ 4 files changed, 60 insertions(+), 1 deletion(-) diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/CommonAPI.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/CommonAPI.java index c740ea7..5483d03 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/CommonAPI.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/CommonAPI.java @@ -65,6 +65,15 @@ public interface CommonAPI { + /** + * 小程序验证 - 小程序openid验证 + * @param username + * @return + * */ + public HanHaiMember getUserByNameHanHaiXcxOpenId(String username); + + + /** * 6字典表的 翻译 * @param table diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java index e967bee..1739cd4 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java @@ -73,7 +73,7 @@ public class ShiroConfig { } //特易招 - filterChainDefinitionMap.put("/api/*", "anon"); //api相关接口全部放开 + filterChainDefinitionMap.put("/api/**", "anon"); //api相关接口全部放开 filterChainDefinitionMap.put("/sys/oss/file/upload", "anon"); //图片上传验证放开 filterChainDefinitionMap.put("/sys/common/upload", "anon"); //图片上传验证放开 diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroRealm.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroRealm.java index d265473..a8fc6fe 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroRealm.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroRealm.java @@ -192,6 +192,39 @@ public class ShiroRealm extends AuthorizingRealm { + /** + * 校验token的有效性 + * + * @param token + */ + public HanHaiMember checkUserTokenIsEffectHanHaiOpenId(String token) throws AuthenticationException { + Result result = new Result(); + // 解密获得username,用于和数据库进行对比 + String openid = JwtUtil.getUsername(token); + if (openid == null) { + throw new AuthenticationException("token非法无效!"); + } + + // 查询用户信息 + log.debug("———校验token是否有效————checkUserTokenIsEffect——————— "+ token); + HanHaiMember user = commonApi.getUserByNameHanHaiXcxOpenId(openid); + if (user == null || user.getAppletOpenid() == null) { + throw new AuthenticationException("用户不存在!"); + } +// // 判断用户状态 +// if (user.getDeleteFlag().equals("Y")) { +// throw new AuthenticationException("账号已被注销,请联系管理员!"); +// } + // 校验token是否超时失效 & 或者账号密码是否错误 + if (!jwtTokenRefresh(token, openid, openid)) { + throw new JeecgBoot401Exception(CommonConstant.TOKEN_IS_INVALID_MSG); + } + return user; + } + + + + /** * JWTToken刷新生命周期 (实现: 用户在线操作不掉线功能) * 1、登录成功后将用户的JWT生成的Token作为k、v存储到cache缓存里面(这时候k、v值一样),缓存有效期设置为Jwt有效时间的2倍 diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java index 7dbb082..fac4cf2 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java @@ -144,6 +144,23 @@ public class SysBaseApiImpl implements ISysBaseAPI { return user; } + /** + * 公共验证--根据账号查询验证用户信息-客户端 + * @param username + * @return + * */ + @Override + public HanHaiMember getUserByNameHanHaiXcxOpenId(String username){ + if(oConvertUtils.isEmpty(username)) { + return null; + } + HanHaiMember user = hanHaiMemberService.lambdaQuery().eq(HanHaiMember::getAppletOpenid,username).one(); + if(user==null) { + return null; + } + return user; + } + @Override public String translateDictFromTable(String table, String text, String code, String key) {