/**
* @param {number} timeToLive
*/
var AuthenticationManager = function(timeToLive) {
this.timeToLive = timeToLive // 有效时间
this.map = new Map() // 缓存token和过期时间
};
/**
* @param {string} tokenId
* @param {number} currentTime
* @return {void}
*/
AuthenticationManager.prototype.generate = function(tokenId, currentTime) {
// 每次创建时,保存tokenId和过期时间
// 过期时间为当前时间加上有效时间
this.map.set(tokenId, currentTime + this.timeToLive)
};
/**
* @param {string} tokenId
* @param {number} currentTime
* @return {void}
*/
AuthenticationManager.prototype.renew = function(tokenId, currentTime) {
// 如果当前token还未到过期时间,就设置新过期时间为当前时间加上有效时间
if (this.map.get(tokenId) > currentTime) {
this.map.set(tokenId, currentTime + this.timeToLive)
}
};
/**
* @param {number} currentTime
* @return {number}
*/
AuthenticationManager.prototype.countUnexpiredTokens = function(currentTime) {
let count = 0 // 存储未过期验证码数量
// 遍历所有过期时间
for (const time of this.map.values()) {
// 如果当前时间还未到过期时间,就进行计数
if (time > currentTime) {
count++
}
}
return count
};
/**
* Your AuthenticationManager object will be instantiated and called as such:
* var obj = new AuthenticationManager(timeToLive)
* obj.generate(tokenId,currentTime)
* obj.renew(tokenId,currentTime)
* var param_3 = obj.countUnexpiredTokens(currentTime)
*/
评论