com.mycomm.itool.security.TokenBasedFactorAccessManager Maven / Gradle / Ivy
The newest version!
package com.mycomm.itool.security;
import java.util.HashMap;
import java.util.Set;
public class TokenBasedFactorAccessManager implements FactorAccessManager{
private HashMap accessLists ;
private static final long SIZE_5W = 10000L * 5;
private static long ACTUAL_SIZE ;
private static final long WINDOW_SIZE = 100;
private static long ACTUAL_WINDOW_SIZE;
public TokenBasedFactorAccessManager(long size,long window_size) {
ACTUAL_SIZE = size;
ACTUAL_WINDOW_SIZE = window_size;
accessLists = new HashMap();
for(long i=1;i<= ACTUAL_SIZE;i++){
accessLists.put(i+"",new AccessCounter());
}
}
public TokenBasedFactorAccessManager() {
this(SIZE_5W,WINDOW_SIZE);
}
public void resetFactor() {
Set keys = accessLists.keySet();
for(String ky:keys){
accessLists.get(ky).reset();
}
}
public boolean testFactor(String key) {
AccessCounter accessCount = accessLists.get(key);
if(accessCount == null){
return false;
}
if(accessCount.getCounter() <= ACTUAL_WINDOW_SIZE){
accessCount.increase();
return true;
}
accessCount.increase();
return false;
}
public long testValue(String key) {
AccessCounter counter = accessLists.get(key);
if(counter == null){
return 0;
}
return counter.getCounter();
}
}