package com.dounine.corgi.demo.session;
import com.dounine.corgi.utils.IpUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.UUID;
/**
* Created by huanghuanlai on 16/6/13.
*/
public final class TokenUtils {
private static final int TOKEN_LEN = 4;
private static final int UUID_SIZE = 12;
private static final int TIME_SIZE = 13;
private static final int UUID_INDEX = 1;
private static final int TIME_INDEX = 3;
private static final String POINT = ".";
private TokenUtils(){}
/**
* 根据IP地址与用户名生成token令牌
* @param ip 地扯
* @param username 用户名
* @return token令牌(ip反转.uuid后.用户名哈希.生成时间)
*/
public static String create(String ip,String username){
long lip = IpUtils.ipToLong(ip);
String uuid = UUID.randomUUID().toString();
StringBuffer token = new StringBuffer(uuid.replace("-",""));
token.append(POINT);
token.append(String.valueOf(lip));
token.append(POINT);
token.append(System.currentTimeMillis());//访问时间
return token.toString();
}
public static boolean verify(String token) {
if(StringUtils.isBlank(token)){
return false;
}
String[] tokens = token.split("\\.");
boolean valid = true;
if(tokens.length!=TOKEN_LEN){
valid = false;
}else if(tokens[UUID_INDEX].length()!=UUID_SIZE){//uuid 长度
valid = false;
}else if(tokens[TIME_INDEX].length()!=TIME_SIZE){//时间长度
valid = false;
}else{
valid = true;
}
return valid;
}
}