token expire time

This commit is contained in:
imhao183
2020-03-07 15:19:50 +08:00
parent c03a6f46fb
commit 7e0f268b7c
5 changed files with 24 additions and 2 deletions
@@ -99,6 +99,7 @@ public final class BrokerConstants {
public static final String CLIENT_PROTO_SECRET_KEY = "client.proto.secret_key";
public static final String TOKEN_SECRET_KEY = "token.key";
public static final String TOKEN_EXPIRE_TIME = "token.expire_time";
public static final String EMBED_DB_PROPERTY_NAME = "embed.db";
@@ -35,11 +35,13 @@ import io.moquette.spi.IStore;
import io.moquette.spi.impl.ProtocolProcessor;
import io.moquette.spi.impl.ProtocolProcessorBootstrapper;
import io.moquette.spi.impl.security.AES;
import io.moquette.spi.impl.subscriptions.Token;
import io.moquette.spi.security.IAuthenticator;
import io.moquette.spi.security.IAuthorizator;
import io.moquette.spi.security.ISslContextCreator;
import io.moquette.spi.security.Tokenor;
import io.netty.util.ResourceLeakDetector;
import io.netty.util.internal.StringUtil;
import win.liyufan.im.DBUtil;
import org.slf4j.Logger;
@@ -387,6 +389,14 @@ public class Server {
hazelcastInstance.getCluster().getLocalMember().setIntAttribute(HZ_Cluster_Node_ID, nodeId);
hazelcastInstance.getCluster().getLocalMember().setStringAttribute(HZ_Cluster_Node_External_IP, serverIp);
Tokenor.setKey(config.getProperty(BrokerConstants.TOKEN_SECRET_KEY));
String expirTimeStr = config.getProperty(TOKEN_EXPIRE_TIME);
if (!StringUtil.isNullOrEmpty(expirTimeStr)) {
try {
Tokenor.setExpiredTime(Long.parseLong(expirTimeStr));
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
RPCCenter.getInstance().init(this);
return true;
}
@@ -6,6 +6,7 @@ import io.moquette.spi.impl.security.AES;
public class Tokenor {
private static String KEY = "testim";
private static long expiredTime = Long.MAX_VALUE;
public static void setKey(String key) {
if (!StringUtil.isNullOrEmpty(key)) {
@@ -13,6 +14,10 @@ public class Tokenor {
}
}
public static void setExpiredTime(long expiredTime) {
Tokenor.expiredTime = expiredTime;
}
public static String getUserId(byte[] password) {
try {
String signKey =
@@ -21,8 +26,8 @@ public class Tokenor {
if (signKey.startsWith(KEY + "|")) {
signKey = signKey.substring(KEY.length() + 1);
long timestamp = Long.parseLong(signKey.substring(0, signKey.indexOf('|')));
if (System.currentTimeMillis() - timestamp > 7 * 24 * 60 *60 *1000) {
//return false;
if (expiredTime > 0 && System.currentTimeMillis() - timestamp > expiredTime) {
return null;
}
String id = signKey.substring(signKey.indexOf('|') + 1);
return id;