Kaynağa Gözat

短信验证码服务代码优化

shimingxy 6 ay önce
ebeveyn
işleme
e269efd5de

+ 1 - 2
maxkey-authentications/maxkey-authentication-core/src/main/java/org/dromara/maxkey/authn/web/AuthTokenRefreshPoint.java

@@ -65,8 +65,7 @@ public class AuthTokenRefreshPoint {
  		_logger.trace("refresh token {} " , refreshToken);
  		if(_logger.isTraceEnabled()) {WebContext.printRequest(request);}
  		try {
-	 		if(StringUtils.isNotBlank(refreshToken) 
-	 				&& refreshTokenService.validateJwtToken(refreshToken)) {
+	 		if(refreshTokenService.validateJwtToken(refreshToken)) {
 	 			String sessionId = refreshTokenService.resolveJWTID(refreshToken);
 	 			_logger.trace("Try to  refresh sessionId [{}]" , sessionId);
 		 		Session session = sessionManager.refresh(sessionId);

+ 1 - 2
maxkey-starter/maxkey-starter-sms/src/main/java/org/dromara/maxkey/autoconfigure/SmsAutoConfiguration.java

@@ -49,8 +49,7 @@ public class SmsAutoConfiguration  {
             smsOtpAuthnService.setRedisOptTokenStore(redisOptTokenStore);
         }
         
-        _logger.debug("SmsOtpAuthnService {} inited." , 
-        				persistence == ConstsPersistence.REDIS ? "Redis" : "InMemory");
+        _logger.debug("SmsOtpAuthnService {} inited." , persistence == ConstsPersistence.REDIS ? "Redis" : "InMemory");
         return smsOtpAuthnService;
     }
    

+ 40 - 60
maxkey-starter/maxkey-starter-sms/src/main/java/org/dromara/maxkey/password/sms/SmsOtpAuthnService.java

@@ -17,7 +17,6 @@
 
 package org.dromara.maxkey.password.sms;
 
-import java.sql.Types;
 import java.util.concurrent.TimeUnit;
 
 import org.dromara.maxkey.configuration.EmailConfig;
@@ -33,17 +32,16 @@ import org.dromara.maxkey.password.sms.impl.SmsOtpAuthnTencentCloud;
 import org.dromara.maxkey.password.sms.impl.SmsOtpAuthnYunxin;
 import org.dromara.maxkey.persistence.service.CnfEmailSendersService;
 import org.dromara.maxkey.persistence.service.CnfSmsProviderService;
+import org.dromara.mybatis.jpa.query.LambdaQuery;
 
 import com.github.benmanes.caffeine.cache.Cache;
 import com.github.benmanes.caffeine.cache.Caffeine;
 
 public class SmsOtpAuthnService {
 
-    protected static final Cache<String, AbstractOtpAuthn> smsAuthnStore = 
-            Caffeine.newBuilder()
-                .expireAfterWrite(60, TimeUnit.MINUTES)
-                .build();
-    
+	static final Cache<String, AbstractOtpAuthn> smsAuthnStore = 
+			Caffeine.newBuilder().expireAfterWrite(60, TimeUnit.MINUTES).build();
+
     CnfSmsProviderService smsProviderService;
     
     CnfEmailSendersService emailSendersService;
@@ -62,69 +60,51 @@ public class SmsOtpAuthnService {
 	}
 
 	public AbstractOtpAuthn getByInstId(String instId) {
-    	AbstractOtpAuthn otpAuthn = smsAuthnStore.getIfPresent(instId);
-    	if(otpAuthn == null) {
-    		CnfSmsProvider smsProvider = 
-    				smsProviderService.findOne("where instid = ? ", new Object[]{instId}, new int[]{Types.VARCHAR});
+    	AbstractOtpAuthn smsOtpAuthn = smsAuthnStore.getIfPresent(instId);
+    	if(smsOtpAuthn == null) {
+    		LambdaQuery<CnfSmsProvider> lambdaQuery = new LambdaQuery<CnfSmsProvider>();
+    		lambdaQuery.eq(CnfSmsProvider::getInstId, instId);
+    		CnfSmsProvider smsProvider = smsProviderService.get(lambdaQuery);
     		if(smsProvider != null ) {
-    			
     			if(smsProvider.getProvider().equalsIgnoreCase("aliyun")) {
-    				SmsOtpAuthnAliyun aliyun = new SmsOtpAuthnAliyun(
-													smsProvider.getAppKey(),
-													PasswordReciprocal.getInstance().decoder(smsProvider.getAppSecret()),
-													smsProvider.getTemplateId(),
-													smsProvider.getSignName()
-												);
-    				if(redisOptTokenStore != null) {
-    					aliyun.setOptTokenStore(redisOptTokenStore);
-    				}
-    				otpAuthn = aliyun;
+					smsOtpAuthn = new SmsOtpAuthnAliyun(
+							smsProvider.getAppKey(),
+							PasswordReciprocal.getInstance().decoder(smsProvider.getAppSecret()),
+							smsProvider.getTemplateId(), 
+							smsProvider.getSignName());
     			}else if(smsProvider.getProvider().equalsIgnoreCase("tencentcloud")) {
-    				SmsOtpAuthnTencentCloud tencentCloud = new SmsOtpAuthnTencentCloud(
-    												smsProvider.getAppKey(),
-													PasswordReciprocal.getInstance().decoder(smsProvider.getAppSecret()),
-    												smsProvider.getSmsSdkAppId(),
-    												smsProvider.getTemplateId(),
-    												smsProvider.getSignName()
-    											);
-    				if(redisOptTokenStore != null) {
-    					tencentCloud.setOptTokenStore(redisOptTokenStore);
-    				}
-    				otpAuthn = tencentCloud;
+					smsOtpAuthn = new SmsOtpAuthnTencentCloud(
+							smsProvider.getAppKey(),
+							PasswordReciprocal.getInstance().decoder(smsProvider.getAppSecret()),
+							smsProvider.getSmsSdkAppId(), 
+							smsProvider.getTemplateId(), smsProvider.getSignName());
     			}else if(smsProvider.getProvider().equalsIgnoreCase("neteasesms")) {
-    				SmsOtpAuthnYunxin yunxin = new SmsOtpAuthnYunxin(
-    												smsProvider.getAppKey(),
-													PasswordReciprocal.getInstance().decoder(smsProvider.getAppSecret()),
-    												smsProvider.getTemplateId()
-    											);
-    				if(redisOptTokenStore != null) {
-    					yunxin.setOptTokenStore(redisOptTokenStore);
-    				}
-    				otpAuthn = yunxin;
+					smsOtpAuthn = new SmsOtpAuthnYunxin(
+							smsProvider.getAppKey(),
+							PasswordReciprocal.getInstance().decoder(smsProvider.getAppSecret()),
+							smsProvider.getTemplateId());
     			}else if(smsProvider.getProvider().equalsIgnoreCase("email")) {
-    				CnfEmailSenders emailSender = 
-    						emailSendersService.findOne("where instid = ? ", new Object[]{instId}, new int[]{Types.VARCHAR});
-    				
-    				String credentials = PasswordReciprocal.getInstance().decoder(emailSender.getCredentials());
-    				EmailConfig emailConfig = 
-    								new EmailConfig(
-    										emailSender.getAccount(),
-    										credentials,
-    										emailSender.getSmtpHost(),
-    										emailSender.getPort(),
-    										ConstsBoolean.isTrue(emailSender.getSslSwitch()),
-    										emailSender.getSender());
-    				MailOtpAuthn mailOtpAuthn = new MailOtpAuthn(emailConfig);
-    				if(redisOptTokenStore != null) {
-    					mailOtpAuthn.setOptTokenStore(redisOptTokenStore);
-    				}
-    				otpAuthn = mailOtpAuthn;
+    				LambdaQuery<CnfEmailSenders> emailSenderslambdaQuery = new LambdaQuery<CnfEmailSenders>();
+    				emailSenderslambdaQuery.eq(CnfEmailSenders::getInstId, instId);
+    				CnfEmailSenders emailSender = emailSendersService.get(emailSenderslambdaQuery);
+					String credentials = PasswordReciprocal.getInstance().decoder(emailSender.getCredentials());
+					EmailConfig emailConfig = new EmailConfig(
+							emailSender.getAccount(), 
+							credentials,
+							emailSender.getSmtpHost(),
+							emailSender.getPort(),
+							ConstsBoolean.isTrue(emailSender.getSslSwitch()), 
+							emailSender.getSender());
+    				smsOtpAuthn = new MailOtpAuthn(emailConfig);
     			}
     			
-    			smsAuthnStore.put(instId, otpAuthn);	
+    			if(redisOptTokenStore != null) {
+    				smsOtpAuthn.setOptTokenStore(redisOptTokenStore);
+				}
+    			smsAuthnStore.put(instId, smsOtpAuthn);	
     		}
     	}
-    	return otpAuthn;
+    	return smsOtpAuthn;
     }
 
 	public void setRedisOptTokenStore(RedisOtpTokenStore redisOptTokenStore) {