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); 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); 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"; }