|
|
@@ -4,6 +4,7 @@ import cn.reghao.jutil.jdk.security.RandomString;
|
|
|
import cn.reghao.jutil.jdk.security.RsaCryptor;
|
|
|
import cn.reghao.jutil.jdk.string.IDObfuscation;
|
|
|
import cn.reghao.tnb.account.api.constant.TokenType;
|
|
|
+import cn.reghao.tnb.account.api.iface.AccountQuery;
|
|
|
import cn.reghao.tnb.account.app.db.mapper.LoginAttemptsMapper;
|
|
|
import cn.reghao.tnb.account.app.model.constant.LoginPlat;
|
|
|
import cn.reghao.tnb.account.api.dto.AccountInfo;
|
|
|
@@ -50,12 +51,13 @@ public class AccountTokenServiceImpl implements AccountTokenService {
|
|
|
private final UserAccountMapper userAccountMapper;
|
|
|
private final LoginAttemptsMapper loginAttemptsMapper;
|
|
|
private final PubkeyService pubkeyService;
|
|
|
- private final IDObfuscation userIdObfuscation;
|
|
|
+ private final IDObfuscation idObfuscation;
|
|
|
+ private final AccountQuery accountQuery;
|
|
|
|
|
|
public AccountTokenServiceImpl(RedisOps redisOps, RedisString redisString, RedisStringObject redisStringObject,
|
|
|
UserAccountMapper userAccountMapper, LoginAttemptsMapper loginAttemptsMapper,
|
|
|
ServerProperties serverProperties, PubkeyService pubkeyService,
|
|
|
- IDObfuscation userIdObfuscation) {
|
|
|
+ IDObfuscation idObfuscation, AccountQuery accountQuery) {
|
|
|
long sessionTimeout = serverProperties.getServlet().getSession().getTimeout().getSeconds();
|
|
|
this.redisOps = redisOps;
|
|
|
this.redisString = redisString;
|
|
|
@@ -63,7 +65,8 @@ public class AccountTokenServiceImpl implements AccountTokenService {
|
|
|
this.userAccountMapper = userAccountMapper;
|
|
|
this.loginAttemptsMapper = loginAttemptsMapper;
|
|
|
this.pubkeyService = pubkeyService;
|
|
|
- this.userIdObfuscation = userIdObfuscation;
|
|
|
+ this.idObfuscation = idObfuscation;
|
|
|
+ this.accountQuery = accountQuery;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -114,7 +117,7 @@ public class AccountTokenServiceImpl implements AccountTokenService {
|
|
|
String savedSignKey = redisString.get(RedisKeys.getJwtSignKey("pubkey"));
|
|
|
RSAPublicKey rsaPublicKey = RsaCryptor.getRSAPublicKey(savedSignKey);
|
|
|
try {
|
|
|
- AccountAuthToken userAuthToken = JwtUtil.getAuthentication1(token, rsaPublicKey, userIdObfuscation);
|
|
|
+ AccountAuthToken userAuthToken = JwtUtil.getAuthentication1(token, rsaPublicKey, idObfuscation);
|
|
|
if (userAuthToken != null) {
|
|
|
return userAuthToken;
|
|
|
}
|
|
|
@@ -137,7 +140,7 @@ public class AccountTokenServiceImpl implements AccountTokenService {
|
|
|
int plat = refreshPayload.getPlat();
|
|
|
String loginId = refreshPayload.getLoginId();
|
|
|
long userId = refreshPayload.getUserId();
|
|
|
- String userIdStr = userIdObfuscation.obfuscate(userId);
|
|
|
+ String userIdStr = accountQuery.getUserIdStr(userId);
|
|
|
Object object = redisStringObject.get(RedisKeys.getAuthTokenKey(userIdStr, plat, loginId));
|
|
|
AccountAuthToken authToken = (AccountAuthToken) object;
|
|
|
|
|
|
@@ -153,7 +156,7 @@ public class AccountTokenServiceImpl implements AccountTokenService {
|
|
|
@Override
|
|
|
public AccountToken grantUserToken(AccountAuthToken authToken) {
|
|
|
long userId = authToken.getUserId();
|
|
|
- String userIdStr = userIdObfuscation.obfuscate(userId);
|
|
|
+ String userIdStr = accountQuery.getUserIdStr(userId);
|
|
|
int plat = authToken.getPlat();
|
|
|
long accessExpireIn = 1000L*3600*24*7;
|
|
|
long accessExpireAt = System.currentTimeMillis() + accessExpireIn;
|
|
|
@@ -268,7 +271,7 @@ public class AccountTokenServiceImpl implements AccountTokenService {
|
|
|
}
|
|
|
|
|
|
private void revokeUserToken(long userId, int plat, String loginId) {
|
|
|
- String userIdStr = userIdObfuscation.obfuscate(userId);
|
|
|
+ String userIdStr = accountQuery.getUserIdStr(userId);
|
|
|
String refreshToken = redisString.get(RedisKeys.getRefreshTokenKey(userIdStr, loginId));
|
|
|
String accessToken = redisString.get(RedisKeys.getAccessTokenKey(userIdStr, loginId));
|
|
|
String[] keys = List.of(RedisKeys.getRefreshTokenKey(userIdStr, loginId),
|