From 43983deb481a3f5fa00d371babd585404f57ff3f Mon Sep 17 00:00:00 2001 From: TinyAnts Date: Tue, 20 Dec 2022 11:55:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=AB=E7=A0=81=E7=99=BB=E5=BD=95=E4=BA=8C?= =?UTF-8?q?=E7=BB=B4=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mdd/front/config/FrontConfig.java | 2 ++ .../mdd/front/controller/LoginController.java | 12 +++++++ .../com/mdd/front/service/ILoginService.java | 2 ++ .../front/service/impl/LoginServiceImpl.java | 34 +++++++++++++++++++ 4 files changed, 50 insertions(+) diff --git a/server/like-front/src/main/java/com/mdd/front/config/FrontConfig.java b/server/like-front/src/main/java/com/mdd/front/config/FrontConfig.java index b7d10914..6b9e2d7d 100644 --- a/server/like-front/src/main/java/com/mdd/front/config/FrontConfig.java +++ b/server/like-front/src/main/java/com/mdd/front/config/FrontConfig.java @@ -28,6 +28,8 @@ public class FrontConfig { "/api/article/category", "/api/article/detail", "/api/article/list", + + "/api/login/getScanCode" }; } diff --git a/server/like-front/src/main/java/com/mdd/front/controller/LoginController.java b/server/like-front/src/main/java/com/mdd/front/controller/LoginController.java index 1ea9bf50..6b5e6433 100644 --- a/server/like-front/src/main/java/com/mdd/front/controller/LoginController.java +++ b/server/like-front/src/main/java/com/mdd/front/controller/LoginController.java @@ -11,6 +11,10 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpSession; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.LinkedHashMap; import java.util.Map; /** @@ -104,4 +108,12 @@ public class LoginController { return AjaxResult.success(); } + @GetMapping("/getScanCode") + public AjaxResult> getScanCode(HttpSession session) { + String qrcodeUrl = iLoginService.getScanCode(session); + Map map = new LinkedHashMap<>(); + map.put("url", qrcodeUrl); + return AjaxResult.success(map); + } + } diff --git a/server/like-front/src/main/java/com/mdd/front/service/ILoginService.java b/server/like-front/src/main/java/com/mdd/front/service/ILoginService.java index fca2141c..85bfcb95 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/ILoginService.java +++ b/server/like-front/src/main/java/com/mdd/front/service/ILoginService.java @@ -3,6 +3,7 @@ package com.mdd.front.service; import com.mdd.front.validate.UserRegisterValidate; import com.mdd.front.vo.LoginTokenVo; +import javax.servlet.http.HttpSession; import java.util.Map; /** @@ -71,4 +72,5 @@ public interface ILoginService { */ void forgotPassword(Map params); + String getScanCode(HttpSession session); } diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java index f3cf8b73..585f6ad8 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java +++ b/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java @@ -17,6 +17,7 @@ import com.mdd.front.config.FrontConfig; import com.mdd.front.service.ILoginService; import com.mdd.front.validate.UserRegisterValidate; import com.mdd.front.vo.LoginTokenVo; +import jdk.nashorn.internal.runtime.regexp.joni.Config; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.api.WxConsts; import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken; @@ -27,6 +28,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import javax.servlet.http.HttpSession; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.util.Map; /** @@ -414,6 +418,36 @@ public class LoginServiceImpl implements ILoginService { userMapper.updateById(user); } + @Override + public String getScanCode(HttpSession session) { + // 获取AppId + String appId = ConfigUtils.get("op_channel", "appId", ""); + + // 微信开放平台授权 + String baseUrl = "https://open.weixin.qq.com/connect/qrconnect" + + "?appid=%s" + + "&redirect_uri=%s" + + "&response_type=code" + + "&scope=snsapi_login" + + "&state=%s" + + "#wechat_redirect"; + + // 回调地址 + String redirectUrl = "https://www.baidu.com/"; + try { + redirectUrl = URLEncoder.encode(redirectUrl, "UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new OperateException(e.getMessage()); + } + + // 防止csrf攻击 + String state = ToolsUtils.makeUUID().replaceAll("-", ""); + RedisUtils.set("wechat-open-state-"+session.getId(), state, 600); + + //生成qrcodeUrl + return String.format(baseUrl, appId, redirectUrl, state); + } + /** * 生成用户编号 *