From eed0982e7e4d3f4fd4ae48b90979a35db86cf95a Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Thu, 7 Dec 2023 17:41:34 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E8=A7=86=E9=A2=91=E5=92=8C?= =?UTF-8?q?=E9=A6=96=E9=A1=B5=E4=BB=8B=E7=BB=8D=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/LoginController.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/LoginController.java diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/LoginController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/LoginController.java new file mode 100644 index 0000000..8317725 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/LoginController.java @@ -0,0 +1,53 @@ +package com.flossom.miniProgram.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.flossom.common.core.web.controller.BaseController; +import com.flossom.common.core.web.domain.AjaxResult; +import com.flossom.miniProgram.domain.WxCode2SessionRet; +import com.flossom.miniProgram.utils.MiniProgramUtils; +import org.apache.commons.codec.digest.DigestUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class LoginController extends BaseController { + + @PostMapping("/wx/login") + public AjaxResult getJwt(@RequestParam(value = "code") String code, + @RequestParam(value = "rawData", required = false) String rawData, + @RequestParam(value = "signature", required = false) String signature) throws Exception { + // 1. 使用临时凭证code获取 appi + appsecret + code + WxCode2SessionRet wxCode2SessionRet = JSON.parseObject(MiniProgramUtils.getSessionKeyAndOpenId(code), WxCode2SessionRet.class); + if (0 != wxCode2SessionRet.getErrcode()) { + return AjaxResult.error(wxCode2SessionRet.getErrmsg()); + } + + // 2.校验签名 小程序发送的签名signature与服务器端生成的签名signature2 = sha1(rawData + sessionKey) + String signature2 = DigestUtils.sha1Hex(rawData + wxCode2SessionRet.getSession_key()); + if (!signature.equals(signature2)) { + return AjaxResult.error("签名校验失败"); + } + + // 5.根据返回的User实体类,判断用户是否是新用户,是的话,将用户信息存到数据库; + // 用户非敏感信息:rawData + // 签名:signature + JSONObject rawDataJson = JSON.parseObject(rawData); +// LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); +// lqw.eq(User::getOpenId, openid); +// User user = userService.getOne(lqw); +// if (user == null) { +// // 用户信息入库 +// String nickName = rawDataJson.getString("nickName"); +// String avatarUrl = rawDataJson.getString("avatarUrl"); +// user = new User(); +// user.setOpenId(openid); +// user.setAvatar(avatarUrl); +// user.setNickName(nickName); +// userService.save(user); +// } + return AjaxResult.success(); + } + +}