diff --git a/jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java b/jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java index 4b0218a..79f2b17 100644 --- a/jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java +++ b/jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java @@ -379,6 +379,15 @@ public interface ISysBaseAPI extends CommonAPI { HanHaiMember getUserByNameHanHaiAccount(@RequestParam("username") String username); + /** + * 小程序用户登录的token验证 + * @param username + * @return + */ + @Override + @GetMapping("/sys/api/getUserByNameHanHaiXcxOpenId") + public HanHaiMember getUserByNameHanHaiXcxOpenId(String username); + // /** // * 小程序用户登录的token验证 // * @param username diff --git a/jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/fallback/SysBaseAPIFallback.java b/jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/fallback/SysBaseAPIFallback.java index 5975029..84ff59d 100644 --- a/jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/fallback/SysBaseAPIFallback.java +++ b/jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/fallback/SysBaseAPIFallback.java @@ -234,6 +234,14 @@ public class SysBaseAPIFallback implements ISysBaseAPI { log.error("服务节点不通,导致获取登录用户信息失败: " + cause.getMessage(), cause); return null; } + + @Override + public HanHaiMember getUserByNameHanHaiXcxOpenId(String username) { + log.error("服务节点不通,导致获取登录用户信息失败: " + cause.getMessage(), cause); + return null; + } + + // // @Override // public DbMumber getUserByName3(String username,Integer isOrgan) { 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 dddf9d3..dbd2d47 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 @@ -64,6 +64,14 @@ public interface CommonAPI { public HanHaiMember getUserByNameHanHaiAccount(String username); + /** + * 小程序验证 - 小程序openid验证 + * @param username + * @return + * */ + public HanHaiMember getUserByNameHanHaiXcxOpenId(String username); + + /** * 6字典表的 翻译 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 e84fd1f..50e37f5 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,42 @@ 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-base/jeecg-boot-base-core/target/classes/org/jeecg/common/api/CommonAPI.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/common/api/CommonAPI.class index 7a5b8ea..cb34f8f 100644 Binary files a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/common/api/CommonAPI.class and b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/common/api/CommonAPI.class differ diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/config/shiro/ShiroRealm.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/config/shiro/ShiroRealm.class index 5d4f113..475a99e 100644 Binary files a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/config/shiro/ShiroRealm.class and b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/config/shiro/ShiroRealm.class differ diff --git a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/hanHaiRealEnterprise/entity/HanHaiRealEnterprise.class b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/hanHaiRealEnterprise/entity/HanHaiRealEnterprise.class index 7b36a92..692098a 100644 Binary files a/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/hanHaiRealEnterprise/entity/HanHaiRealEnterprise.class and b/jeecg-boot-base/jeecg-boot-base-core/target/classes/org/jeecg/modules/hanHaiRealEnterprise/entity/HanHaiRealEnterprise.class differ diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/IndexApiServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/IndexApiServiceImpl.java index aacc353..c7921a8 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/IndexApiServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/IndexApiServiceImpl.java @@ -98,7 +98,7 @@ public class IndexApiServiceImpl implements IndexApiService { //获取代表作品带分页 @Override public Result getWorkPage(String token, WaterPageBean bean){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); Page page = new Page(bean.getPageNo(), bean.getPageSize()); Page pageList = atMasterPieceService .lambdaQuery() diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/InfoApiServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/InfoApiServiceImpl.java index dbac442..420d999 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/InfoApiServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiservice/impl/InfoApiServiceImpl.java @@ -82,14 +82,14 @@ public class InfoApiServiceImpl implements InfoApiService { //获取个人信息接口 @Override public Result getInfo(String token){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); return Result.OK("查询成功", hanHaiMember); } //修改个人信息接口 @Override public Result updateInfo(String token, HanHaiMember bean){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); bean.setId(hanHaiMember.getId()); hanHaiMemberService.updateById(bean); return Result.OK("修改成功"); @@ -140,7 +140,7 @@ public class InfoApiServiceImpl implements InfoApiService { //获取收益记录带分页 @Override public Result getIncomePage(String token, HanHaiWaterBean bean){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); Page page = new Page(bean.getPageNo(), bean.getPageSize()); Page pageList = hanHaiWaterService .lambdaQuery() @@ -153,7 +153,7 @@ public class InfoApiServiceImpl implements InfoApiService { //获取提现记录带分页 @Override public Result getWithdrawPage(String token, HanHaiWaterBean bean){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); Page page = new Page(bean.getPageNo(), bean.getPageSize()); Page pageList = hanHaiWaterService .lambdaQuery() @@ -167,7 +167,7 @@ public class InfoApiServiceImpl implements InfoApiService { //个人认证提交 @Override public Result submitCertification(String token, HanHaiRealNameBean hanHaiRealNameBean){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); String imageStraight = hanHaiRealNameBean.getImageStraight(); String imageReverseSide = hanHaiRealNameBean.getImageReverseSide(); @@ -211,7 +211,7 @@ public class InfoApiServiceImpl implements InfoApiService { //企业认证提交 @Override public Result submitCompanyCertification(String token, HanHaiRealEnterpriseBean hanHaiRealEnterpriseBean){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); String imageStraight = hanHaiRealEnterpriseBean.getImageStraight(); String imageReverseSide = hanHaiRealEnterpriseBean.getImageReverseSide(); @@ -265,7 +265,7 @@ public class InfoApiServiceImpl implements InfoApiService { //获取个人认证信息 @Override public Result getCertification(String token){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); HanHaiRealName one = hanHaiRealNameService .lambdaQuery() .eq(HanHaiRealName::getUserId, hanHaiMember.getId()) @@ -276,7 +276,7 @@ public class InfoApiServiceImpl implements InfoApiService { //获取企业认证信息 @Override public Result getCompanyCertification(String token){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); List list = hanHaiRealEnterpriseService .lambdaQuery() .list(); @@ -286,7 +286,7 @@ public class InfoApiServiceImpl implements InfoApiService { //获取我的发布列表 @Override public Result getMyReleasePage(String token,MyReleasePageBean bean){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); Page page = new Page(bean.getPageNo(), bean.getPageSize()); atTrendsService.lambdaQuery() .eq(AtTrends::getUserId,hanHaiMember.getId()) @@ -298,7 +298,7 @@ public class InfoApiServiceImpl implements InfoApiService { //获取我的发布详情 @Override public Result getMyReleaseDetail(String token,String id){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); AtTrends one = atTrendsService.lambdaQuery() .eq(AtTrends::getId, id) .one(); @@ -308,7 +308,7 @@ public class InfoApiServiceImpl implements InfoApiService { //获取推广记录列表 @Override public Result getPromotionPage(String token, PromotionPageBean bean){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); Page page = new Page(bean.getPageNo(), bean.getPageSize()); Page page1 = atPromotionService.lambdaQuery() .orderByDesc(AtPromotion::getCreateTime) @@ -319,7 +319,7 @@ public class InfoApiServiceImpl implements InfoApiService { //获取推广记录详情 @Override public Result getPromotionDetail(String token,String id){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); AtPromotion one = atPromotionService.lambdaQuery() .eq(AtPromotion::getId, id) .one(); @@ -330,7 +330,7 @@ public class InfoApiServiceImpl implements InfoApiService { //用户提现 @Override public Result withdraw(String token){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); return Result.OK(); } @@ -343,7 +343,7 @@ public class InfoApiServiceImpl implements InfoApiService { //加油小程序-获取订单流水信息 @Override public Result getOrderWaterPage(String token, OrderWaterPageBean bean){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); Page page = new Page(bean.getPageNo(), bean.getPageSize()); Page page1 = cheerWaterService.lambdaQuery() .eq(CheerWater::getUserId, hanHaiMember.getId()) @@ -357,7 +357,7 @@ public class InfoApiServiceImpl implements InfoApiService { //加油小程序-用户输入支付创建支付订单并且支付 @Override public Result createOrderPay(String token, OrderPayBean bean){ - HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); //判断输入金额是否为空 if(bean.getMoney() == null){ return Result.error("支付金额不能为空"); 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 6932f0b..6e802b1 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 @@ -145,6 +145,26 @@ public class SysBaseApiImpl implements ISysBaseAPI { } + /** + * 公共验证--根据账号查询验证用户信息-客户端 + * @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) { return sysDictService.queryTableDictTextByKey(table, text, code, key);