@@ -2,12 +2,12 @@ package cn.com.taiji.ias.manager.portal; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.entity.user.AccountInfo; | |||
import cn.com.taiji.core.manager.cache.LoginCacheFinals; | |||
import cn.com.taiji.core.manager.cache.RedisKeyGenerator; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginByCodeRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginByCodeResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.core.repo.jpa.user.AccountInfoRepo; | |||
import cn.com.taiji.ias.model.LoginFinals; | |||
import cn.com.taiji.ias.model.RedisKeyGenerator; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
@@ -30,7 +30,7 @@ public class LoginByCodeManager extends AbstractLoginManager { | |||
if (accountInfo == null) throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("手机号输入错误"); | |||
findAndValidStaff(accountInfo.getOpenId(), request.getLoginSource()); | |||
String code = UUID.randomUUID().toString().replaceAll("-", "");// code用于换Token,还完Token就没用了 | |||
redisManager.set(RedisKeyGenerator.getLoginOpenIdByCodeKey(code, request.getLoginSource().name()), accountInfo.getOpenId(), LoginFinals.LOGIN_CODE_EXPIRED, TimeUnit.MINUTES); | |||
redisManager.set(RedisKeyGenerator.getLoginOpenIdByCodeKey(code, request.getLoginSource().name()), accountInfo.getOpenId(), LoginCacheFinals.LOGIN_CODE_EXPIRED, TimeUnit.MINUTES); | |||
LoginByCodeResponse response = new LoginByCodeResponse(); | |||
response.setInfo("登录成功"); | |||
return response; |
@@ -4,12 +4,12 @@ import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import cn.com.taiji.core.entity.user.AccountInfo; | |||
import cn.com.taiji.core.entity.user.Staff; | |||
import cn.com.taiji.core.manager.cache.RedisKeyGenerator; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginConfirmRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginConfirmResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.core.repo.jpa.user.AccountInfoRepo; | |||
import cn.com.taiji.ias.manager.RedisWrapManager; | |||
import cn.com.taiji.ias.model.RedisKeyGenerator; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
@@ -3,13 +3,13 @@ package cn.com.taiji.ias.manager.portal; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import cn.com.taiji.core.entity.user.AccountInfo; | |||
import cn.com.taiji.core.manager.cache.LoginCacheFinals; | |||
import cn.com.taiji.core.manager.cache.RedisKeyGenerator; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.core.repo.jpa.user.AccountInfoRepo; | |||
import cn.com.taiji.ias.manager.RedisWrapManager; | |||
import cn.com.taiji.ias.model.LoginFinals; | |||
import cn.com.taiji.ias.model.RedisKeyGenerator; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import org.springframework.transaction.annotation.Transactional; | |||
@@ -47,7 +47,7 @@ public class LoginManager extends AbstractLoginManager { | |||
//校验是否是已经被停用的员工,停用则不允许登录web和app端 | |||
findAndValidStaff(accountInfo.getOpenId(), request.getLoginSource()); | |||
String code = UUID.randomUUID().toString().replaceAll("-", "");// code用于换Token,还完Token就没用了 | |||
redisManager.set(RedisKeyGenerator.getLoginOpenIdByCodeKey(code, request.getLoginSource().name()), accountInfo.getOpenId(), LoginFinals.LOGIN_CODE_EXPIRED, TimeUnit.MINUTES); | |||
redisManager.set(RedisKeyGenerator.getLoginOpenIdByCodeKey(code, request.getLoginSource().name()), accountInfo.getOpenId(), LoginCacheFinals.LOGIN_CODE_EXPIRED, TimeUnit.MINUTES); | |||
LoginResponse response = new LoginResponse(code); | |||
response.setInfo("登录成功"); | |||
return response; | |||
@@ -56,14 +56,14 @@ public class LoginManager extends AbstractLoginManager { | |||
private void addFailedCount(String loginName, SourceType sourceType) { | |||
redisManager.increment(RedisKeyGenerator.getFailCountKey(loginName, sourceType), 1L); | |||
redisManager.expire(RedisKeyGenerator.getFailCountKey(loginName, sourceType), LoginFinals.LOGIN_FAILED_EXPIRE, TimeUnit.MINUTES); | |||
redisManager.expire(RedisKeyGenerator.getFailCountKey(loginName, sourceType), LoginCacheFinals.LOGIN_FAILED_EXPIRE, TimeUnit.MINUTES); | |||
} | |||
private void checkFailedCount(String loginName, SourceType sourceType) throws ServiceHandleException { | |||
String countStr = redisManager.get(RedisKeyGenerator.getFailCountKey(loginName, sourceType)); | |||
int count = hasText(countStr) ? Integer.parseInt(countStr) : 0; | |||
if (count >= LoginFinals.LOGIN_TRY_COUNT) { | |||
String msg = toLogString("登录失败次数超过{}次,{}分钟内禁止登录", LoginFinals.LOGIN_TRY_COUNT, LoginFinals.LOGIN_FAILED_EXPIRE); | |||
if (count >= LoginCacheFinals.LOGIN_TRY_COUNT) { | |||
String msg = toLogString("登录失败次数超过{}次,{}分钟内禁止登录", LoginCacheFinals.LOGIN_TRY_COUNT, LoginCacheFinals.LOGIN_FAILED_EXPIRE); | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException(msg); | |||
} | |||
} |
@@ -1,11 +1,11 @@ | |||
package cn.com.taiji.ias.manager.portal; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.manager.cache.LoginCacheFinals; | |||
import cn.com.taiji.core.manager.cache.RedisKeyGenerator; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.SendCodeRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.SendCodeResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.ias.model.LoginFinals; | |||
import cn.com.taiji.ias.model.RedisKeyGenerator; | |||
import org.springframework.stereotype.Service; | |||
import java.util.concurrent.TimeUnit; | |||
@@ -20,7 +20,7 @@ public class SendCodeManager extends AbstractLoginManager { | |||
code = (Math.random() * 1000000 + "").substring(0, 6); | |||
logger.info("短信验证码:{}", code); | |||
//TODO 短信接口 | |||
redisManager.set(RedisKeyGenerator.getSmsCodeKey(request.getMobile(), request.getLoginSource().name(), request.getBusinessType()), code, LoginFinals.LOGIN_SMS_CODE_EXPIRED, TimeUnit.MINUTES); | |||
redisManager.set(RedisKeyGenerator.getSmsCodeKey(request.getMobile(), request.getLoginSource().name(), request.getBusinessType()), code, LoginCacheFinals.LOGIN_SMS_CODE_EXPIRED, TimeUnit.MINUTES); | |||
SendCodeResponse response = new SendCodeResponse(); | |||
response.setInfo("短信验证码发送成功"); | |||
return response; |
@@ -1,14 +0,0 @@ | |||
package cn.com.taiji.ias.model; | |||
import cn.com.taiji.common.model.finals.SysFinals; | |||
public class LoginFinals extends SysFinals { | |||
public final static int LOGIN_TRY_COUNT = 5;// 次 | |||
public final static int LOGIN_FAILED_EXPIRE = 5;// 分钟 | |||
public final static int LOGIN_CODE_EXPIRED = 5 * 60;// 分钟 | |||
public final static int LOGIN_TOKEN_EXPIRED = 24 * 60;// 分钟 | |||
public final static int LOGIN_SMS_CODE_EXPIRED = 1;// 分钟 | |||
} |
@@ -1,46 +0,0 @@ | |||
package cn.com.taiji.ias.model; | |||
import cn.com.taiji.common.manager.AbstractManager; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
public class RedisKeyGenerator extends AbstractManager { | |||
private final static String COLON = ":"; | |||
private final static String FAIL_COUNT_KEY_PREFIX = "issues:failedcount:"; | |||
private final static String LOGIN_KEY_PREFIX = "issues:login:"; | |||
public static String getFailCountKey(String accountName, SourceType sourceType) { | |||
return FAIL_COUNT_KEY_PREFIX + accountName + COLON + sourceType; | |||
} | |||
public static String getLoginOpenIdByCodeKey(String code, String loginSource) { | |||
return LOGIN_KEY_PREFIX + COLON + "getopenIdByCode" + COLON + code + COLON + loginSource; | |||
} | |||
public static String getLoginOpenIdKey(String accessToken) { | |||
return LOGIN_KEY_PREFIX + COLON + "getopenId" + COLON + accessToken; | |||
} | |||
public static String getLoginSourceTypeKey(String accessToken) { | |||
return LOGIN_KEY_PREFIX + COLON + "getsourcetype" + COLON + accessToken; | |||
} | |||
public static String getLoginAccountInfoKey(String accessToken) { | |||
return LOGIN_KEY_PREFIX + COLON + "getaccountinfo" + COLON + accessToken; | |||
} | |||
public static String getLoginAgencyIdKey(String accessToken) { | |||
return LOGIN_KEY_PREFIX + COLON + "getagencyid" + COLON + accessToken; | |||
} | |||
public static String getLoginTokenKey(String openId) { | |||
return LOGIN_KEY_PREFIX + COLON + "gettoken" + COLON + openId; | |||
} | |||
public static String getSmsCodeKey(String mobile, String loginSource, Integer businessType) { | |||
return LOGIN_KEY_PREFIX + COLON + "getsmscode" + COLON + mobile + COLON + loginSource + COLON + businessType; | |||
} | |||
} |