| src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/org/springblade/modules/auth/sms/MobTechSmsSend.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/org/springblade/modules/auth/sms/MobTechSmsVerify.java | ●●●●● patch | view | raw | blame | history |
src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java
@@ -35,10 +35,13 @@ import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.support.Kv; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.RandomType; import org.springblade.core.tool.utils.StringUtil; import org.springblade.core.tool.utils.WebUtil; import org.springblade.modules.auth.provider.ITokenGranter; import org.springblade.modules.auth.provider.TokenGranterBuilder; import org.springblade.modules.auth.provider.TokenParameter; import org.springblade.modules.auth.sms.MobTechSmsSend; import org.springblade.modules.auth.utils.TokenUtil; import org.springblade.modules.system.entity.UserInfo; import org.springframework.web.bind.annotation.*; @@ -129,6 +132,14 @@ return Kv.create().set("key", key).set("image", specCaptcha.toBase64()); } @GetMapping("/oauth/smsCode") @ApiOperation(value = "发送短信验证码") public String sms(@ApiParam(value = "手机号", required = true) @RequestParam String phone) { String result = MobTechSmsSend.requestData(phone, StringUtil.random(4, RandomType.INT)); // 将key和base64返回给前端 return result; } @GetMapping("/oauth/clear-cache") @ApiOperation(value = "清除缓存") public Kv clearCache() { src/main/java/org/springblade/modules/auth/sms/MobTechSmsSend.java
New file @@ -0,0 +1,97 @@ package org.springblade.modules.auth.sms; import javax.net.ssl.*; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.Charset; import java.security.SecureRandom; import java.security.cert.X509Certificate; /** * @PROJECT_NAME: zttj-java-boot * @DESCRIPTION: * @USER: aix * @DATE: 2023/12/11 15:03 */ public class MobTechSmsSend { private static final String SERVER_URL = "https://webapi.sms.mob.com/sms/sendmsg";// 发送验证码的请求路径URL private static final String APP_KEY = "appkey=20e92ce48d7db&zone=+86";// 账号 /** * 发起https 请求 * @param phone * @param code * @return */ public static String requestData(String phone ,String code){ String params = APP_KEY + "&phone=" + phone + "&code=" + code; HttpURLConnection conn = null; try { // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager(){ public X509Certificate[] getAcceptedIssuers(){return null;} public void checkClientTrusted(X509Certificate[] certs, String authType){} public void checkServerTrusted(X509Certificate[] certs, String authType){} }}; // Install the all-trusting trust manager SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, trustAllCerts, new SecureRandom()); //ip host verify HostnameVerifier hv = new HostnameVerifier() { public boolean verify(String urlHostName, SSLSession session) { return urlHostName.equals(session.getPeerHost()); } }; //set ip host verify HttpsURLConnection.setDefaultHostnameVerifier(hv); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); URL url = new URL(SERVER_URL); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST");// POST conn.setConnectTimeout(3000); conn.setReadTimeout(3000); // set params ;post params if (params!=null) { conn.setDoOutput(true); DataOutputStream out = new DataOutputStream(conn.getOutputStream()); out.write(params.getBytes(Charset.forName("UTF-8"))); out.flush(); out.close(); } conn.connect(); //get result if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { String result = parsRtn(conn.getInputStream()); return result; } else { System.out.println(conn.getResponseCode() + " "+ conn.getResponseMessage()); } } catch (Exception e) { e.printStackTrace(); } finally { if (conn != null) conn.disconnect(); } return null; } private static String parsRtn(InputStream in) throws IOException { byte[] data = new byte[1024]; int len = 0; String result = ""; while ((len = in.read(data)) != -1) { result += new String(data, 0, len); } return result; } } src/main/java/org/springblade/modules/auth/sms/MobTechSmsVerify.java
New file @@ -0,0 +1,97 @@ package org.springblade.modules.auth.sms; import com.alibaba.druid.support.json.JSONUtils; import javax.net.ssl.*; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.Charset; import java.security.SecureRandom; import java.security.cert.X509Certificate; /** * @PROJECT_NAME: zttj-java-boot * @DESCRIPTION: * @USER: aix * @DATE: 2023/12/11 15:06 */ public class MobTechSmsVerify { private static final String SERVER_URL = "https://webapi.sms.mob.com/sms/verify";// 发送验证码的请求路径URL private static final String APP_KEY = "appkey=20e92ce48d7db&zone=+86";// 账号 /** * 发起https 请求 * @param phone * @param code * @return */ public static String requestData(String phone ,String code){ String params = APP_KEY + "&phone=" + phone + "&code=" + code; HttpURLConnection conn = null; try { // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager(){ public X509Certificate[] getAcceptedIssuers(){return null;} public void checkClientTrusted(X509Certificate[] certs, String authType){} public void checkServerTrusted(X509Certificate[] certs, String authType){} }}; // Install the all-trusting trust manager SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, trustAllCerts, new SecureRandom()); //ip host verify HostnameVerifier hv = new HostnameVerifier() { public boolean verify(String urlHostName, SSLSession session) { return urlHostName.equals(session.getPeerHost()); } }; //set ip host verify HttpsURLConnection.setDefaultHostnameVerifier(hv); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); URL url = new URL(SERVER_URL); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST");// POST conn.setConnectTimeout(3000); conn.setReadTimeout(3000); // set params ;post params if (params!=null) { conn.setDoOutput(true); DataOutputStream out = new DataOutputStream(conn.getOutputStream()); out.write(params.getBytes(Charset.forName("UTF-8"))); out.flush(); out.close(); } conn.connect(); //get result if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { String result = parsRtn(conn.getInputStream()); return result; } else { System.out.println(conn.getResponseCode() + " "+ conn.getResponseMessage()); } } catch (Exception e) { e.printStackTrace(); } finally { if (conn != null) conn.disconnect(); } return null; } private static String parsRtn(InputStream in) throws IOException { byte[] data = new byte[1024]; int len = 0; String result = ""; while ((len = in.read(data)) != -1) { result += new String(data, 0, len); } return result; } }