From 7e00eafd0a519b48b69dd209026cfe3a9cf353c2 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Wed, 16 Aug 2023 09:16:59 +0800
Subject: [PATCH] 微信登录设置标识
---
skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/endpoint/BladeTokenEndPoint.java | 8 +++++++-
skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/granter/WxPhoneNumberTokenGranter.java | 9 +++++++++
skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/cache/CacheNames.java | 5 +++++
3 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/endpoint/BladeTokenEndPoint.java b/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/endpoint/BladeTokenEndPoint.java
index 3478399..1515524 100644
--- a/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/endpoint/BladeTokenEndPoint.java
+++ b/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/endpoint/BladeTokenEndPoint.java
@@ -62,7 +62,7 @@
import java.util.LinkedHashMap;
import java.util.Map;
-import static cn.gistack.common.cache.CacheNames.OAUTH_KEY;
+import static cn.gistack.common.cache.CacheNames.*;
import static org.springblade.core.cache.constant.CacheConstant.*;
/**
@@ -160,6 +160,8 @@
String url = WX_GET_PHONE_NUMBER + "?access_token=" + wxAccessToken;
//向微信接口发起请求获取手机号
+
+
RestTemplate template = new RestTemplate();
Map<String, Object> params = new LinkedHashMap<>();
params.put("code", code);
@@ -167,6 +169,10 @@
JSONObject resultObj = (JSONObject) JSONObject.parse(result);
JSONObject phoneInfo = (JSONObject) resultObj.get("phone_info");
String phoneNumber = phoneInfo.get("phoneNumber").toString();
+
+ //把code存入redis作为登录标识(有效时长300秒)
+ bladeRedis.setEx(WX_KEY + phoneNumber,code,5*60L);
+
R<User> userR = userClient.userByAccount("000000", phoneNumber);
if (userR.getData() != null) {
return R.data(phoneNumber);
diff --git a/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/granter/WxPhoneNumberTokenGranter.java b/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/granter/WxPhoneNumberTokenGranter.java
index 93a20f7..50902da 100644
--- a/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/granter/WxPhoneNumberTokenGranter.java
+++ b/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/granter/WxPhoneNumberTokenGranter.java
@@ -44,6 +44,15 @@
protected OAuth2Authentication getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest) {
Map<String, String> parameters = new LinkedHashMap<String, String>(tokenRequest.getRequestParameters());
String phone = parameters.get("username");
+ String code = parameters.get("password");
+
+ //password和redis中的对比
+ String redisCode = bladeRedis.get(CacheNames.WX_KEY + phone);
+ // 判断验证码
+ if (code == null || !StringUtil.equalsIgnoreCase(redisCode, code)) {
+ throw new UserDeniedAuthorizationException("登录失败");
+ }
+
// 通过手机号查询用户
Authentication userAuth = new UsernamePasswordAuthenticationToken(phone, "CUSTOM_LOGIN_WX");
((AbstractAuthenticationToken) userAuth).setDetails(parameters);
diff --git a/skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/cache/CacheNames.java b/skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/cache/CacheNames.java
index 1a447d2..6e26a92 100644
--- a/skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/cache/CacheNames.java
+++ b/skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/cache/CacheNames.java
@@ -66,4 +66,9 @@
*/
String USER_FAIL_KEY = "blade:user::blade:fail:";
+ /**
+ * 微信验证码key
+ */
+ String WX_KEY = "blade:auth::blade:wx";
+
}
--
Gitblit v1.9.3