mirror of
https://gitee.com/dromara/MaxKey.git
synced 2025-12-08 01:48:33 +08:00
短信验证码服务代码优化
This commit is contained in:
parent
070db180f6
commit
e269efd5de
@ -65,8 +65,7 @@ public class AuthTokenRefreshPoint {
|
|||||||
_logger.trace("refresh token {} " , refreshToken);
|
_logger.trace("refresh token {} " , refreshToken);
|
||||||
if(_logger.isTraceEnabled()) {WebContext.printRequest(request);}
|
if(_logger.isTraceEnabled()) {WebContext.printRequest(request);}
|
||||||
try {
|
try {
|
||||||
if(StringUtils.isNotBlank(refreshToken)
|
if(refreshTokenService.validateJwtToken(refreshToken)) {
|
||||||
&& refreshTokenService.validateJwtToken(refreshToken)) {
|
|
||||||
String sessionId = refreshTokenService.resolveJWTID(refreshToken);
|
String sessionId = refreshTokenService.resolveJWTID(refreshToken);
|
||||||
_logger.trace("Try to refresh sessionId [{}]" , sessionId);
|
_logger.trace("Try to refresh sessionId [{}]" , sessionId);
|
||||||
Session session = sessionManager.refresh(sessionId);
|
Session session = sessionManager.refresh(sessionId);
|
||||||
|
|||||||
@ -49,8 +49,7 @@ public class SmsAutoConfiguration {
|
|||||||
smsOtpAuthnService.setRedisOptTokenStore(redisOptTokenStore);
|
smsOtpAuthnService.setRedisOptTokenStore(redisOptTokenStore);
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.debug("SmsOtpAuthnService {} inited." ,
|
_logger.debug("SmsOtpAuthnService {} inited." , persistence == ConstsPersistence.REDIS ? "Redis" : "InMemory");
|
||||||
persistence == ConstsPersistence.REDIS ? "Redis" : "InMemory");
|
|
||||||
return smsOtpAuthnService;
|
return smsOtpAuthnService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,6 @@
|
|||||||
|
|
||||||
package org.dromara.maxkey.password.sms;
|
package org.dromara.maxkey.password.sms;
|
||||||
|
|
||||||
import java.sql.Types;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import org.dromara.maxkey.configuration.EmailConfig;
|
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.password.sms.impl.SmsOtpAuthnYunxin;
|
||||||
import org.dromara.maxkey.persistence.service.CnfEmailSendersService;
|
import org.dromara.maxkey.persistence.service.CnfEmailSendersService;
|
||||||
import org.dromara.maxkey.persistence.service.CnfSmsProviderService;
|
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.Cache;
|
||||||
import com.github.benmanes.caffeine.cache.Caffeine;
|
import com.github.benmanes.caffeine.cache.Caffeine;
|
||||||
|
|
||||||
public class SmsOtpAuthnService {
|
public class SmsOtpAuthnService {
|
||||||
|
|
||||||
protected static final Cache<String, AbstractOtpAuthn> smsAuthnStore =
|
static final Cache<String, AbstractOtpAuthn> smsAuthnStore =
|
||||||
Caffeine.newBuilder()
|
Caffeine.newBuilder().expireAfterWrite(60, TimeUnit.MINUTES).build();
|
||||||
.expireAfterWrite(60, TimeUnit.MINUTES)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
CnfSmsProviderService smsProviderService;
|
CnfSmsProviderService smsProviderService;
|
||||||
|
|
||||||
CnfEmailSendersService emailSendersService;
|
CnfEmailSendersService emailSendersService;
|
||||||
@ -62,69 +60,51 @@ public class SmsOtpAuthnService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public AbstractOtpAuthn getByInstId(String instId) {
|
public AbstractOtpAuthn getByInstId(String instId) {
|
||||||
AbstractOtpAuthn otpAuthn = smsAuthnStore.getIfPresent(instId);
|
AbstractOtpAuthn smsOtpAuthn = smsAuthnStore.getIfPresent(instId);
|
||||||
if(otpAuthn == null) {
|
if(smsOtpAuthn == null) {
|
||||||
CnfSmsProvider smsProvider =
|
LambdaQuery<CnfSmsProvider> lambdaQuery = new LambdaQuery<CnfSmsProvider>();
|
||||||
smsProviderService.findOne("where instid = ? ", new Object[]{instId}, new int[]{Types.VARCHAR});
|
lambdaQuery.eq(CnfSmsProvider::getInstId, instId);
|
||||||
|
CnfSmsProvider smsProvider = smsProviderService.get(lambdaQuery);
|
||||||
if(smsProvider != null ) {
|
if(smsProvider != null ) {
|
||||||
|
|
||||||
if(smsProvider.getProvider().equalsIgnoreCase("aliyun")) {
|
if(smsProvider.getProvider().equalsIgnoreCase("aliyun")) {
|
||||||
SmsOtpAuthnAliyun aliyun = new SmsOtpAuthnAliyun(
|
smsOtpAuthn = new SmsOtpAuthnAliyun(
|
||||||
smsProvider.getAppKey(),
|
smsProvider.getAppKey(),
|
||||||
PasswordReciprocal.getInstance().decoder(smsProvider.getAppSecret()),
|
PasswordReciprocal.getInstance().decoder(smsProvider.getAppSecret()),
|
||||||
smsProvider.getTemplateId(),
|
smsProvider.getTemplateId(),
|
||||||
smsProvider.getSignName()
|
smsProvider.getSignName());
|
||||||
);
|
|
||||||
if(redisOptTokenStore != null) {
|
|
||||||
aliyun.setOptTokenStore(redisOptTokenStore);
|
|
||||||
}
|
|
||||||
otpAuthn = aliyun;
|
|
||||||
}else if(smsProvider.getProvider().equalsIgnoreCase("tencentcloud")) {
|
}else if(smsProvider.getProvider().equalsIgnoreCase("tencentcloud")) {
|
||||||
SmsOtpAuthnTencentCloud tencentCloud = new SmsOtpAuthnTencentCloud(
|
smsOtpAuthn = new SmsOtpAuthnTencentCloud(
|
||||||
smsProvider.getAppKey(),
|
smsProvider.getAppKey(),
|
||||||
PasswordReciprocal.getInstance().decoder(smsProvider.getAppSecret()),
|
PasswordReciprocal.getInstance().decoder(smsProvider.getAppSecret()),
|
||||||
smsProvider.getSmsSdkAppId(),
|
smsProvider.getSmsSdkAppId(),
|
||||||
smsProvider.getTemplateId(),
|
smsProvider.getTemplateId(), smsProvider.getSignName());
|
||||||
smsProvider.getSignName()
|
|
||||||
);
|
|
||||||
if(redisOptTokenStore != null) {
|
|
||||||
tencentCloud.setOptTokenStore(redisOptTokenStore);
|
|
||||||
}
|
|
||||||
otpAuthn = tencentCloud;
|
|
||||||
}else if(smsProvider.getProvider().equalsIgnoreCase("neteasesms")) {
|
}else if(smsProvider.getProvider().equalsIgnoreCase("neteasesms")) {
|
||||||
SmsOtpAuthnYunxin yunxin = new SmsOtpAuthnYunxin(
|
smsOtpAuthn = new SmsOtpAuthnYunxin(
|
||||||
smsProvider.getAppKey(),
|
smsProvider.getAppKey(),
|
||||||
PasswordReciprocal.getInstance().decoder(smsProvider.getAppSecret()),
|
PasswordReciprocal.getInstance().decoder(smsProvider.getAppSecret()),
|
||||||
smsProvider.getTemplateId()
|
smsProvider.getTemplateId());
|
||||||
);
|
|
||||||
if(redisOptTokenStore != null) {
|
|
||||||
yunxin.setOptTokenStore(redisOptTokenStore);
|
|
||||||
}
|
|
||||||
otpAuthn = yunxin;
|
|
||||||
}else if(smsProvider.getProvider().equalsIgnoreCase("email")) {
|
}else if(smsProvider.getProvider().equalsIgnoreCase("email")) {
|
||||||
CnfEmailSenders emailSender =
|
LambdaQuery<CnfEmailSenders> emailSenderslambdaQuery = new LambdaQuery<CnfEmailSenders>();
|
||||||
emailSendersService.findOne("where instid = ? ", new Object[]{instId}, new int[]{Types.VARCHAR});
|
emailSenderslambdaQuery.eq(CnfEmailSenders::getInstId, instId);
|
||||||
|
CnfEmailSenders emailSender = emailSendersService.get(emailSenderslambdaQuery);
|
||||||
String credentials = PasswordReciprocal.getInstance().decoder(emailSender.getCredentials());
|
String credentials = PasswordReciprocal.getInstance().decoder(emailSender.getCredentials());
|
||||||
EmailConfig emailConfig =
|
EmailConfig emailConfig = new EmailConfig(
|
||||||
new EmailConfig(
|
emailSender.getAccount(),
|
||||||
emailSender.getAccount(),
|
credentials,
|
||||||
credentials,
|
emailSender.getSmtpHost(),
|
||||||
emailSender.getSmtpHost(),
|
emailSender.getPort(),
|
||||||
emailSender.getPort(),
|
ConstsBoolean.isTrue(emailSender.getSslSwitch()),
|
||||||
ConstsBoolean.isTrue(emailSender.getSslSwitch()),
|
emailSender.getSender());
|
||||||
emailSender.getSender());
|
smsOtpAuthn = new MailOtpAuthn(emailConfig);
|
||||||
MailOtpAuthn mailOtpAuthn = new MailOtpAuthn(emailConfig);
|
|
||||||
if(redisOptTokenStore != null) {
|
|
||||||
mailOtpAuthn.setOptTokenStore(redisOptTokenStore);
|
|
||||||
}
|
|
||||||
otpAuthn = mailOtpAuthn;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
smsAuthnStore.put(instId, otpAuthn);
|
if(redisOptTokenStore != null) {
|
||||||
|
smsOtpAuthn.setOptTokenStore(redisOptTokenStore);
|
||||||
|
}
|
||||||
|
smsAuthnStore.put(instId, smsOtpAuthn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return otpAuthn;
|
return smsOtpAuthn;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRedisOptTokenStore(RedisOtpTokenStore redisOptTokenStore) {
|
public void setRedisOptTokenStore(RedisOtpTokenStore redisOptTokenStore) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user