/*** 微信用户免密免验证码登录** @param loginBody* @return*/
public Map<String, Object> wxCodeLogin(LoginWeixinBody loginBody) {TMiniProgramInfo info = new TMiniProgramInfo();info.setType(EnumMiniProgramType.STUDYANDTEST.getCode());List<TMiniProgramInfo> infos = miniProgramInfoService.selectTMiniProgramInfoList(info);if (infos == null || infos.size() == 0){throw new CustomException("微信小程序登录异常,请联系管理员");}info = infos.get(0);//与微信服务端交换获取用户openIdString appId = info.getAppId();String appSecret = info.getAppSecret();WeixinLoginRespBean weixinLoginRespBean = weixinHttpUtils.login(appId, appSecret, loginBody.getCode());//查询社矫对象与微信openId对应关系(一对一)TCorrectArchiveWx one = new TCorrectArchiveWx();one.setOpenId(weixinLoginRespBean.getOpenId());List<TCorrectArchiveWx> list = correctArchiveWxMapper.selectTCorrectArchiveWxList(one);if (list == null || list.size() == 0) {throw new CustomException("用户绑定关系已失效,请重新绑定");} else {one = list.get(0);}CorrectArchiveVO archiveVO = tCorrectArchiveService.selectCorrectArchiveVOByPkId(one.getaPk());String loginPersonType = "";String mobilePhone = "";if (archiveVO != null) {mobilePhone = archiveVO.getMobilePhone();loginPersonType = EnumUserType.ARCHIVE.getCode();} else {AsyncManager.me().execute(AsyncFactory.recordLogininfor(null, null, "",null, null, EnumUserType.ARCHIVE.getCode(),loginBody.getTenant(), mobilePhone, "", Constants.LOGIN_FAIL, "微信号未查到人员"));throw new CustomException("微信号未查到人员");}if (StringUtils.isBlank(loginPersonType)) {throw new CustomException("微信登录类型获取异常");}LoginUser loginUser = new LoginUser();loginUser.setTenant(loginBody.getTenant());loginUser.setArchive(archiveVO);updateTCorrectArchiveLog(archiveVO);// 生成tokenString token = tokenService.createToken(loginUser);// 矫正人员登录移除其他tokenSysLogininfor loginInfor = new SysLogininfor();loginInfor.setUserPk(loginUser.getLoginUserId());loginInfor.setUserType(loginPersonType);SysLogininfor sysLogininfor = sysLogininforService.selectLogininforObj(loginInfor);if (sysLogininfor != null) {String userKey = tokenService.getTokenKey(sysLogininfor.getToken());redisCache.deleteObject(userKey);}// 先清除再添加AsyncManager.me().execute(AsyncFactory.recordLogininfor(null, null,loginUser.getToken(), loginUser.getDeptPk(),loginUser.getLoginUserId(), loginPersonType, loginBody.getTenant(), mobilePhone,nickName(loginUser), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));Map<String, Object> param = new HashMap<String, Object>(2);param.put(Constants.TOKEN, token);param.put(Constants.USER_TYPE, loginPersonType);return param;
}
import com.alibaba.fastjson.JSON;
import com.cdkj.common.exception.CustomException;
import com.cdkj.common.utils.CDHttpUtil;
import com.cdkj.common.utils.weixin.vo.WeixinLoginRespBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;import java.util.HashMap;/*** 微信小程序工具类** @author HeHuan*/
@Component
public class WeixinHttpUtils {private static final Logger LOGGER = LoggerFactory.getLogger(WeixinHttpUtils.class);private static final String URL = "https://api.weixin.qq.com/";/*** 登录小程序平台获取openId* <p>* appid   string    是  小程序 appId* secret  string    是  小程序 appSecret* js_code string    是  登录时获取的 code* grant_type  string    是  授权类型,此处只需填写 authorization_code*/public WeixinLoginRespBean login(String appId, String appSecret, String code) {try {String res = CDHttpUtil.httpSendGet(getLoginUrl(appId, appSecret, code), new HashMap<>(0));WeixinLoginRespBean bean = JSON.parseObject(res, WeixinLoginRespBean.class);if (bean == null || bean.getErrCode() != null) {throw new CustomException("获取微信用户信息失败");}return bean;} catch (CustomException e) {throw e;} catch (Exception e) {throw new CustomException("请求返回信息转换异常");}}public String getLoginUrl(String appId, String appSecret, String code) {StringBuffer sb = new StringBuffer();sb.append(URL).append("sns/jscode2session?");sb.append("appid=").append(appId);sb.append("&secret=").append(appSecret);sb.append("&js_code=").append(code);sb.append("&grant_type=authorization_code");return sb.toString();}
}

微信用户免密免验证码登录相关推荐

  1. python微信库无法登录怎么办出现异常_微信用户注意!如果出现登录异常要小心...

    原标题:微信用户注意!如果出现登录异常要小心 来源:1818黄金眼 8月24号,王先生在买东西付钱时,突然发现信用卡有异常记录,虽然及时锁了卡,但还是被刷出去八千多块钱. 01 信用卡被盗刷 共消费八 ...

  2. k8s kubernetes-dashboard 免密+客户端证书登录

    下文为记录 kubernetes-dashboard 如何实现免密且通过客户端证书直接登录 Nginx在配置443 服务端证书时,同时配置客户端证书,实现双向认证 server {listen 443 ...

  3. 微信小程序中短信验证码登录全流程及代码

    才开始学习小程序,用到短信验证码登录 免费注册账号: http://sms_developer.zhenzikj.com/zhenzisms_user/register.html 完整demo下载:  ...

  4. 微信小程序短信验证码 php,微信小程序中短信验证码登录全流程及代码

    才开始学习小程序,用到短信验证码登录,使用榛子云短信(smsow.zhenzikj.com) 效果: 我是java开发者,后端使用了springMvc 短信验证码实现流程 1.构造手机验证码,生成一个 ...

  5. 微信小程序短信验证码登录demo

    自己记录学习使用 html <view class="wrap"><view class="tel"><input type=&q ...

  6. hadoop 添加删除机器以及设置免密登录

    添加hadoop机器 先在slaves中添加机器 然后启动datanode $: ./usr/hadoop-0.20.2-cdh3u4/bin/hadoop-daemon.sh start datan ...

  7. SSH远程免密登录的两种方式

    SSH远程免密登录的两种方式 一.ssh远程登录操作 1.先ping测试下看看网络是否通畅 2.ssh 192.168.150.148 二.ssh免密登录方式一 1.生成公钥.私钥 2.拷贝公钥到目标 ...

  8. VSCode远程连接Linux-使用密钥进行ssh免密登录

    目录 具体安装步骤如下 如上步骤执行后还是不能免密免密登录 重新打开VSCode即可 具体安装步骤如下 通过win上VSCode远程连接ubuntu20.04(详细!!!解决了许多中间会出现的问题供参 ...

  9. Shiro 实现免密登陆

    需求:对接第三方登陆,实现绕过原有Shiro认证登陆. 文章目录 一.实现思路 1. 现状分析 2. 用户来源 3. 所属范围 二.实现方案 2.1. 自定义登录认证规则 2.2. Shiro认证枚举 ...

最新文章

  1. python协程框架_[记录]python的简单协程框架(回调+时间循环+select)
  2. Grunt 5分钟上手:合并+压缩前端代码
  3. UA MATH571B 试验设计 Quarter 2-level析因设计
  4. Win7下面安装SQL Server2005
  5. Go进阶(9): For Range 性能研究
  6. 485 通信注意事项
  7. Why docker command need sudo? | 为什么运行docker命令需要sudo?
  8. PL/SQL Developer 使用技巧小结(转)
  9. 一步步编写操作系统 76 用汇编语言编写字符打印函数
  10. 在OpenEIM中每运行一个程序
  11. UltraEdit 许可证ID 如何加密和解密文本教程分享
  12. 计算机组成原理补充实验,计算机组成原理补充实验.doc
  13. Centos 下配置JAVA环境
  14. Java 实现插入排序算法
  15. 酒桌游戏c语言,拯救冷场,这十三款经典酒桌游戏你玩过几个?
  16. 实用的项目管理网络计划软件-MS Project
  17. 推箱子c语言代码有注释,C语言推箱子源代码推箱子代码完善
  18. 洛谷试炼场——题目单
  19. TP-LINK-TL-WR703N刷Breed用Openwrt固件挂MP288打印机服务共享手机打印服务
  20. Mysql和ES数据同步方案汇总

热门文章

  1. Microelectronic学习章节总结(1)-- 计算机架构复习
  2. Linux | 第一篇——常见指令汇总【超全、超详细讲解】
  3. 大厂面试突击——集合篇
  4. 2021.03青少年软件编程(Python)等级考试试卷(二级)
  5. 360n4手机可以装linux,360手机N4 root教程_360手机N4获取root权限的方法
  6. 关于python浮点数类型错误的是_关于Python的数字类型,以下选项中描述错误的是...
  7. 拦截器重定义及user系统的安全问题
  8. python 贪吃蛇大作战_Python实现贪吃蛇大作战
  9. scilab 数组和字符串
  10. CentOS7下使用rpm安装RabbitMQ